//链栈的实现 --大话数据结构99页 #include <iostream> using namespace std; //链节点定义 typedef struct stacknode { int data; struct stacknode * next; }StackNode, *LinkStackptr; //定义链栈,头指针 和 长度 struct LinkStack{ LinkStackptr top; int count; };
//初始化
void InitStack(LinkStack *L){
L->top=NULL;
L->count=0;
}
//入栈 int Push(LinkStack *L,int e){ LinkStackptr s=new StackNode;//新元素申请内存 s->data= e; //将待插入的数据放入 申请的节点的data s->next=L->top; //top 中的数据放进新节点的next L->top=s; //将s 的赋给top L->count++; //数据个数加一 return 0; //正常终止 } int Pop(LinkStack *L) { LinkStackptr p; if(L->top==NULL ) //判断是否为空,为空说明为空栈 return -1; int e; e=L->top->data; //top 指的栈顶的 数据 p=L->top; //top赋给p L->top=L->top->next; // 大话数据结构99页 free(p); //释放P L->count--; //数据减一 return e; //返回出栈数据 }
// 销毁栈void DestroyStack(LinkStack *L) { LinkStackptr q; while(L->count) { q=L->top->next; delete L->top; L->top=q; L->count--; } cout<<"销毁成功"<<endl; }
void main(){ LinkStack a; InitStack(&a); Push(&a,3); Push(&a,4); Push(&a,5); cout<<Pop(&a)<<endl; cout<<Pop(&a)<<endl; cout<<Pop(&a)<<endl; }
时间: 2024-11-06 14:14:10