zoukankan      html  css  js  c++  java
  • 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
    ",pStack->next->data);
     19           pStack->next=pStack->next->next;
     20           free(K);
     21           printf("pop position:%d
    ",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
    ");
     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
    ",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
    ",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
    ",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         }
  • 相关阅读:
    Try .NET & Github Gist
    vue & font-awesome
    JSP基础与提高(一).md
    chm转换为html文件
    markdownpad生成目录
    MarkdownPad2的密钥
    删除多余的win10软件
    计算机组成原理与机构期末复习的概念
    sublime text 的小细节设置,让你的代码更优美
    NetBeans主题配色方案加设置.md
  • 原文地址:https://www.cnblogs.com/qiuheng/p/5784023.html
Copyright © 2011-2022 走看看