资源描述
一、 实验目的和要求通过对栈的编程练习,加强对栈的特点、顺序存储结构及其基本运算的理解和掌握。使用C语言根据相应算法编写一个程序,实现建栈、入栈、退栈及读栈顶元素。要求仔细阅读下面的内容,编写一个C程序,上机调试通过,并观察其结果,写出实验报告书。2、 实验内容和原理 内容:建立一个容量15的顺序栈,首先在其中压入5个元素,然后作退栈运算。原理:入栈:首先判断栈顶指针是否指向最后一个位置,若是,则栈满,算法结束。然后将栈顶指针进1。最后将性元素插入到栈顶指针指向的位置。退栈:首先判断栈顶指针是否为0,若是,则栈空,算法结束。然后将栈顶指针赋给一个指定的变量,最后栈顶指针退1。三、主要仪器设备计算机一台3、 实验主程序#include #include struct Stackint size;int top;int *stack;void init(struct Stack *ps,int size)ps-size=size;ps-top=0;ps-stack=malloc(size*sizeof(int);void push(int s,int m,int *top,int x) if(*top=m) printf(Stack overflow!n);return; *top=*top+1; s*top-1=x;void pop(int s,int *top,int *y) if(*top=0) printf(Stack underflown);return; *y=s*top-1; *top=*top-1;void print(const struct Stack *ps)int i;for(i=0;i!=ps-top;+i) printf(%d ,ps-stacki);int main(void) struct Stack a; init(&a,15); int i,y; push(a.stack,a.size,&a.top,99); push(a.stack,a.size,&a.top,88); push(a.stack,a.size,&a.top,5); push(a.stack,a.size,&a.top,1); push(a.stack,a.size,&a.top,55); print(&a); printf(“n”); pop(a.stack,&a.top,&y); pop(a.stack,&a.top,&y); pop(a.stack,&a.top,&y); print(&a); getchar(); return 0; 实验结果五、实验心得 通过实验学习,我理解了线性顺序栈的入栈与退栈的算法,并实现了用c语言编写程序,提高了我的编程能力,受益匪浅。
展开阅读全文