栈的链式存储结构

来源:互联网 发布:机房网络布线 编辑:程序博客网 时间:2024/05/16 02:50

栈顶放在单链表的头部,对于空栈来说,链表原定义是头指针指向空,所以链栈的空其实就是top==NULL的时候。



链栈的结构代码如下:

typedef struct StackNode{int data;struct stackNode *next;}StackNode,*LinkStackPtr;typedef struct LinkStack{LinkStackPtr top;int count;} LinkStack;   

链栈的操作大部分被和单链表相似,只是在插入和删除上,特殊一点。


进栈操作

  对于链栈的进栈push操作,假设元素值e的新节点是s,top为栈顶指针

statue push(LinkStack *S,int e){LinkStackPtr s=(LinkStackPtr)malloc(sizeof(StackNode));s->data=e;s->next=S->top;//将当前的栈顶元素赋值给新节点的直接后继S->top=s;     //将新节点s赋值给栈顶指针S->count++;return OK; }


出栈操作

  假设变量p用来存储要删除的栈顶节点,将栈顶指针下移一位,最后释放p即可。

//若栈不空,则删除栈顶元素,用e返回其值,并返回OK Statue pop(LinkStack *S,int *e){LinkStackPtr p;if(StackEmpty(*S))     return error;*e=S->top->data;p=S->top;//将栈顶元素赋值给pS->top=S->top->next;//使得栈顶指针下移一位,指向后一节点。free(p);s->count--;return OK; }



0 0
原创粉丝点击