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;∥指向后继结点的指针 INODE; typedef struct stack( NODE"top; ISTACK; 请单鼠标左键换页!
栈的链式存储结构在C语言中可用下列类型定义实现: type struct node { //链栈的结点结构 StackEntry item; //栈的数据元素类型 struct node *next; //指向后继结点的指针 }NODE; typedef struct stack{ NODE *top; }STACK;
下面我们将给出链栈各项基本操作的算法 1.初始化栈S void InitStack(STACK*S S->top NULL: 请单鼠标左键换页!
下面我们将给出链栈各项基本操作的算法。 1. 初始化栈S void InitStack(STACK *S) { S->top=NULL; }
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->tol p-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; } }