用链表实现栈,完成了出栈入栈功能。
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(;inext=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 }