3.1.3栈的链式存储 若是栈中元素的数目变化范围较大或不清楚栈元素 的数目,就应该考虑使用链式存储结构。人们将用链 式存储结构表示的栈称作“链栈”。链栈通常用一个 无头结点的单链表表示。如图3-3所示 由于栈的插入删除操作只能在一端进行,而对于 单链表来说,在首端插入删除结点要比尾端相对地容 易一些,所以,我们将单链表的首端作为栈顶端,即 将单链表的头指针作为栈顶指针 请单市鼠标左键换页
3.1.3 栈的链式存储 若是栈中元素的数目变化范围较大或不清楚栈元素 的数目,就应该考虑使用链式存储结构。人们将用链 式存储结构表示的栈称作“链栈”。链栈通常用一个 无头结点的单链表表示。如图3-3所示。 由于栈的插入删除操作只能在一端进行,而对于 单链表来说,在首端插入删除结点要比尾端相对地容 易一些,所以,我们将单链表的首端作为栈顶端,即 将单链表的头指针作为栈顶指针
top ∧ 图3-3 请单市鼠标左键换页
^ top 图 3-3
栈的链式存储结构在C语言中可用下列类型定义实现: type struct node{/链栈的结点结构 Stack Entry item;栈的数据元素类型 struct node*next;/指向后继结点的指针 SNODE typedef struct stack NODE“top ISTACK; 请单市鼠标左键换页
栈的链式存储结构在C语言中可用下列类型定义实现: type struct node { //链栈的结点结构 StackEntry item; //栈的数据元素类型 struct node *next; //指向后继结点的指针 }NODE; typedef struct stack{ NODE *top; }STACK;
下面我们将给出链栈各项基本操作的算法。 初始化栈S void InitStack(STACK*S) S->top=NULL; 请单市鼠标左键换页
下面我们将给出链栈各项基本操作的算法。 1. 初始化栈S void InitStack(STACK *S) { S->top=NULL; }
2.入栈 void Push(staCK*S, Stack Entry item) p=(NODE*)malloc(sizeof(NODE)); if(p)exit(OVERFLOW) elsei p->item=item; p->next=s->top S->top=p 请单市鼠标左键换页
2. 入栈 void Push(STACK *S,StackEntry item) { p=(NODE*)malloc(sizeof(NODE)); if (!p) exit(OVERFLOW); else { p->item=item; p->next=S->top; S->top=p; } }