c语言编程之栈(链表实现)

     用链表实现栈,完成了出栈入栈功能。

 1 #include"stdio.h"
  2 typedef int element;
  3 
  4 //define a struct descirbe a stack used by linklist
  5 typedef struct Stack_linklist{
  6         element data;
  7         struct Stack_linklist *next;
  8 }*Stack;
  9 
 10 //define a struct desribe a stack top number
 11 typedef struct Stack_top{
 12         element top;
 13 }*Top;
 14 element pop(Stack pStack,Top pTop)
 15         {
 16           Stack P,K;
 17           K=pStack->next;
 18           printf("pop data:%d\n",pStack->next->data);
 19           pStack->next=pStack->next->next;
 20           free(K);
 21           printf("pop position:%d\n",pTop->top);
 22           --pTop->top;
 23         }
 24 
 25 element Init(Stack *p_Stack,element num,Top pTop)
 26         {
 27            pTop->top=-1;
 28            Stack P,pStack;
 29            pStack=*p_Stack;
 30            int i=0;
 31            if(num<1)
 32                  {
 33                    printf("please input right number\n");
 34                  }
 35            for(;i<num;i++)
 36                 {
 37                    P=(Stack)malloc(sizeof(struct Stack_linklist));
 38                    pStack->next=P;
 39                    pStack=pStack->next;
 40                    pTop->top++;
 41                    pStack->data=i;
 42                    printf("pStack->data:%d\n",pStack->data);
 43                 }
 44           pStack->next=NULL;
 45           return 0;
 46         }
 47 element push(Stack *pStack,element num,Top pTop)
 48         {
 49           Stack P,k,M;
 50           M=(Stack)malloc(sizeof(struct Stack_linklist));
 51           P=*pStack;
 52           k=P->next;
 53           P->next=M;
 54           M->next=k;
 55           M->data=num;
 56           pTop->top++;
 57           printf("push position:%d data:%d\n",pTop->top,M->data);
 58         }
 59 element Print(Stack pStack)
 60         {
 61           Stack P;
 62           P=pStack->next;
 63           while(P)
 64                 {
 65                   printf("data:%d\n",P->data);
 66                   P=P->next;
 67                 }
 68         }
 69 element main()
 70         {
 71           Stack P;
 72           Top pTop;
 73           pTop=(Top)malloc(sizeof(struct Stack_top));
 74           P=(Stack)malloc(sizeof(struct Stack_linklist));
 75           P->next=NULL;
 76           Init(&P,20,pTop);
 77           Print(P);
 78           push(&P,77,pTop);
 79           push(&P,99,pTop);
 80           push(&P,100,pTop);
 81           push(&P,200,pTop);
 82           push(&P,300,pTop);
 83           Print(P);
 84           pop(P,pTop);
 85           pop(P,pTop);
 86           Print(P);
 87         }

 

posted on 2016-08-18 15:15  FREEH  阅读(333)  评论(0编辑  收藏  举报