数据结构学习
用链式存储来实现栈 单链表 不带头结点
C++
#include <iostream>
#include<stdlib.h>
using namespace std;
typedef struct lstack{
int data;
struct lstack* next;
}lstack, * lstackll;
void init(lstackll &s) //初始化
{
s=NULL;
}
void more(lstackll &s, int e) //入栈
{
if(s == NULL)
{
s = (lstack* )malloc(sizeof(lstack));
s ->data = e;
s ->next = NULL;
return;
}
lstackll l = s;
s =(lstack* )malloc(sizeof(lstack));
s ->data = e;
s ->next = l;
}
void out (lstackll &s, int i, int &a) //出栈
{
if(s ->next == NULL) //如果出栈之后是空栈
{
a = s ->data;
s=NULL;
return;
}
lstackll l = s ->next; //如果不是空栈
a = s->data;
free(s);
s = l;
}
int main()
{
lstackll s;
init(s);
more(s,999); //测试用 栈底
for (int i=0; i<10; i++) //循环入栈
more(s,i);
for (int i=0; i<11; i++) //出栈
{
int a = 0;
out(s,i,a);
cout<<a<<endl;
}
more(s,13); //判断能否继续使用
cout<<"\n"<<s->data<<endl;
return 0;
}