3.18、取栈顶元素 Datatype stacktop(seqstack *s) if(stackempty(s) eror( stack is enpty”) return s->data ls->top ☆★ ★
3.1.8、取栈顶元素 Datatype stacktop(seqstack *s) { if(stackempty(s) error(“stack is enpty”); return s–>data[s–>top]; }
3.1.3链栈 栈的链式存储结构称为链栈,它是运算是 受限的单链表,克插入和删除操作仅限制在表头 位置上进行.由于只能在链表头部进行操作,故 链表没有必要像单链表那样附加头结点。栈顶指 针就是链表的头指针。链栈的类型说明如下 typedef struct stacknodet datatype data struct stacknode * next 3stacknode typedef struct i stacknode *top linkstack
3.1.3 链栈 栈的链式存储结构称为链栈,它是运算是 受限的单链表,克插入和删除操作仅限制在表头 位置上进行.由于只能在链表头部进行操作,故 链表没有必要像单链表那样附加头结点。栈顶指 针就是链表的头指针。 链栈的类型说明如下: typedef struct stacknode{ datatype data struct stacknode *next }stacknode; typedef struct { stacknode *top} linkstack;
Void initstack(linkstack * p) p->top=null int stackempty(linkstack*p) return p->top=-null 米
Void initstack(linkstack *p) { p–>top=null; } int stackempty(linkstack *p) { return p–>top==null; }
Void push(linkstack p, datatype x) stacknoae q(stacknode* )malloc(sizeof(stacknode)) q->data x q->next=-p->top p→top=p
• Void push(linkstack *p,datatype x) { stacknode *q q=(stacknode*)malloc(sizeof(stacknode)); q–>data=x; q–>next=p–>top; p–>top=p; }
Datatype pop(linkstack * p) datatype X stacknode *q=p->top if(stackempty(p) error(stack underflow.) x-q->data p-top-=>next free(g returnⅹ:
Datatype pop(linkstack *p) { datatype x; stacknode *q=p–>top; if(stackempty(p) error(“stack underflow.”); x=q–>data; p–>top=q–>next; free(q); return x; }