#include#include //带头结点和不带头结点的区别就是,当链表为空时,L->next 相当于NULL->next是不对的 //推荐使用不带头结点的链栈 typedef struct linkNode { int data; struct linkNode *next; }linkNode,*linkStack; //带头结点的链栈 bool InitStack(linkStack &L) { L=(linkNode *)malloc(sizeof(linkNode)); return false; L->next=NULL; return true; } //不带头结点的链栈 bool InitStack1(linkStack &L) { L->next=NULL; return true; } //带头结点的入栈 bool Push(linkStack &L, int x){ linkNode* S = (linkNode*)malloc(sizeof(linkNode)); S->data = x; S->next = L->next; L->next = S; return true; } //不带头结点的入栈 bool Push1(linkStack &L, int x){ linkNode* S = (linkNode*)malloc(sizeof(linkNode)); S->data = x; S->next = L;//直接将L指向的节点放后面就可以了 L = S; return true; } //不带头结点的出栈 bool Pop(linkStack &L, int &x) { if(L==NULL) return false; linkNode* S = L; x=L->data; L=L->next; free(S); return true; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)