实验六 顺序栈
1. 创建一个包含数字元素的顺序栈,同时具有如下功能:
【1】初始化一个顺序栈
【2】输出顺序栈中各结点的值
【3】在顺序栈中插入值为x的新元素
【4】在顺序栈中出栈操作并打印被删除的元素
【5】给出当前的栈顶元素
提示:
第一步:定义该顺序栈的存储结构(元素都是整型数字)
第二步:定义5种操作的函数
第三步:编写main函数。使用switch函数,根据用户的输入,实现顺序栈相应的基本操作。
2. 选做实验:把第1题中的数字元素改为学生信息表中的信息(学号,姓名,成绩),同时具有上面的5种功能。
#include #include #define m 100 typedef struct { int stack[m]; int top; }stackstru; stackstru *init() /*装入栈*/ { stackstru *s; s =(stackstru*)malloc(sizeof(stackstru)); s->top=0; return s; } int push(stackstru *s,int x) /*入栈操作*/ { if (s->top==m) printf(\"the stack is overflow!\\n\"); else { s->top=s->top+1; s->stack[s->top]=x; } } void display(stackstru *s) /*显示栈所有数据*/ { if(s->top==0) printf(\"the stack is empty!\\n\"); else { while(s->top!=0) { printf(\"%d->\ s->top=s->top-1; } } } int pop(stackstru *s) /*出栈操作并返回被删除的那个记录*/ { int y; if(s->top==0) printf(\"the stack is empty!\\n\"); else { y=s->stack[s->top]; s->top=s->top-1; return y; } } int gettop(stackstru *s) /*得到栈顶数*/ { int e; if(s->top==0) return 0; else e=s->stack[s->top]; return e; } main(stackstru *p) { int n,i,k,h,x1,x2,select; printf(\"create a empty stack!\\n\"); p = init(); printf(\"input a stack length:\\n\"); scanf(\"%d\ for(i=0;i printf(\"input a stack value:\\n\"); scanf(\"%d\ push(p,k); } printf(\"select 1:display()\\n\"); printf(\"select 2:push()\\n\"); printf(\"select 3:pop()\\n\"); printf(\"select 4:gettop()\\n\"); printf(\"input a your select(1-4):\\n\"); scanf(\"%d\ switch(select) { case 1: { display(p); break; } case 2: { printf(\"input a push a value:\\n\"); scanf(\"%d\ push(p,h); display(p); break; } case 3: { x1=pop(p); printf(\"x1->%d\\n\ display(p); break; } case 4: { x1=gettop(p); printf(\"x1->%d\ break; } } } 因篇幅问题不能全部显示,请点此查看更多更全内容