(8)显示栈中元素DispStack(s)从栈顶到栈底顺序显示栈中所有元素void DispStack(SqStack *s)int i;for (i=s->top;i>=0;i--)printf("%c ",s->elem[i]);printf("n");21
21 (8)显示栈中元素 DispStack(s) 从栈顶到栈底顺序显示栈中所有元素。 void DispStack(SqStack *s) { int i; for (i=s->top;i>=0;i-) printf("%c ",s->elem[i]); printf("\n"); }
1.3栈的链式存储结构及其基本运算的实现采用链式存储的栈称为链栈,用单链表实现链栈的优点:不存在栈满上溢进行的按规定栈的所有操作都是在单链表的表头。头结点为*Ihead的链栈,第一个数据结点是栈顶结点an中的将序列(a1,a2'最后一个结点是栈底结点。···元素依次插入空链栈中,生成的链栈见下页。22
22 1.3 栈的链式存储结构及其基本运算的实现 采用链式存储的栈称为链栈,用单链表实现。 链栈的优点: 按规定栈的所有操作都是在单链表的表头。进行的 头结点为*lhead的链栈,第一个数据结点是栈顶结点, 最后一个结点是栈底结点。将序列{a1,a2,.,an }中的 元素依次插入空链栈中,生成的链栈见下页。 不存在栈满上溢
链栈A空链栈栈顶指针aan-1注意:链栈中指针的方向23
23 栈顶指针 链栈 an a1 ∧ 注意: 链栈中指 针的方向 an-1 空链栈 ∧
链栈中数据结点的类型LiStack定义如下:typedef struct linknode/*数据域*/ElemType data;/*指针域*/struct linknode *next; LiStack;25
25 链栈中数据结点的类型 LiStack定义如下: typedef struct linknode { ElemType data; /*数据域*/ struct linknode *next; /*指针域*/ } LiStack;
在链栈中,栈的基本运算算法如下(1)初始化栈initStack(&s)建立一个空栈s。实际上是创建链栈的头结点并将其next域置为NULL。对应算法如下void InitStack(LiStack *&s)s=(LiStack *)malloc(sizeof(LiStack);s->next-NULL;26
26 在链栈中,栈的基本运算算法如下: (1)初始化栈 initStack(&s) 建立一个空栈s。实际上是创建链栈的头结点, 并将其next域置为NULL。对应算法如下: void InitStack(LiStack *&s) { s=(LiStack *)malloc(sizeof(LiStack)); s->next=NULL; }