链栈的初始化,进栈,出栈,以及出栈是相当于单链表的删除,进栈相当于单链表的头插法。
#include
#include
//定义链栈
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode;
//初始化链栈
struct Lnode *init(Lnode *L) {
L=(Lnode*)malloc(sizeof(Lnode));
L->next=NULL;
return L;
}
//进栈
struct Lnode *push (Lnode *L) {
Lnode *p;
int a,b;
printf("输入栈长:");
scanf("%d",&b);
for(int i=0;i
{
p=(Lnode*)malloc(sizeof(Lnode));
printf("输入数据");
scanf("%d",&a);
//头插法
p->data=a;
p->next=L->next;
L->next=p;
}
return L;
}
int pop(Lnode *L){
Lnode *p; //需要设置指针,否则报错
//相当于单链表的删除
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
int main ()
{
Lnode *L,*L1;
L=init(L);
L1= push(L);
pop(L1);
}