链栈的初始化,进栈,出栈,以及出栈是相当于单链表的删除,进栈相当于单链表的头插法。

#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);

}

链栈的初始化,进栈,出栈,以及出栈是相当于单链表的删除,进栈相当于单链表的头插法。
 

猜你喜欢

转载自blog.csdn.net/ganghaodream/article/details/88092203