栈是一种受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。允许进行插入和删除运算的一端称为栈顶(top),位于栈顶的元素称为栈顶元素。不允许进行插入和删除运算的另一端称为栈底(bottom)
从栈中删除一个元素称为出栈或退栈由于栈的插入和删除运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把栈,称为后进先出表(Last In First Out,简称LIFO)
- 链栈的五种栈运算
- (一)栈初始化
- void inistack(node *top)
- { top=NULL;}
- (二)进栈运算
- 1)进栈算法
- (1)为待进栈元素x申请一个新结点,并把x赋给该结点的值域。
- (2)使x结点的指针域指向栈顶结点。
- (3)栈顶指针指向x结点,即使x结点成为新的栈顶结点。
- 2) 实现程序
- Node *top=null;
- Void push(char x)
- {Node *p; p=(Node*)malloc(sizeof(Node));
- p->data=x;p->link=top;top=p;
- }
- (三)出栈运算
- 1)出栈算法
- (1)检查栈是否为空,若为空,进行错误处理。
- (2)取栈顶指针的值,并将栈顶指针暂存。
- (3)删除栈顶结点。
- 2)实现程序
- int pop(char *p_x)
- {Node *p;
- if(top==NULL) return(1);
- *p_x=top->data; p=top;
- top=top->link; free(p);
- return(0);
- }
- (四)取栈顶元素
- Char gettop(node *top)
- {
- if(top!=NULL)
- return(top->data);
- else
- return(NULL);
- }
- (五)判栈空
- int empty(node *top)
- {
- if(top==NULL)
- return( 0);
- else
- return(1);
- }
阅读(745) | 评论(0) | 转发(0) |