第3章链栈及栈的应用栈的链接存储结构及实现链栈:栈的链接存储结构特殊线性表——栈特殊线性表——栈firsta1a2an∧ai链栈需要加头结点吗
如何改造链表实现栈的链接存储
将哪一端作为栈顶
将链头作为栈顶,方便操作
链栈不需要附设头结点
栈的链接存储结构及实现栈顶栈底链栈:栈的链接存储结构特殊线性表——栈特殊线性表——栈topanan-1a1∧firsta1a2an∧ai两种示意图在内存中对应同一种状态topa1an-1an∧栈顶栈底3链栈栈的链式存储结构称为链栈,它是运算受限的单链表,其插入和删除操作仅限制在表头位置上进行
由于只能在链表头部进行操作,故链表没有必要像单链表那样附加头结点
栈顶指针就是链表的头指针
其类型说明为:typedefstructStackNode{DataTypedatastructStackNode*next};StackNode*top;(1)初始化栈voidInitStack(StackNode*top){top=NULL;}(2)判断空栈intStackEmpty(StackNode*top){returntop==NULL;}(3)取栈顶DataTypeGetTop(StackNode*top){if(StackEmpty(p))error(“stackisempty
”);returntop–>data;}算法描述:voidPush(StackNode*top,DataTypex){s=(StackNode*)malloc(sizeof(StackNode));s->data=x;s->next=top;top=s;}topanan-1a1∧(4)入栈xstop操作接口:voidPush(StackNode*top,DataTypex){为什么没有判断栈满
算法描述:DataTypePop(StackNode*top){if(Sta