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

时间:2023-03-09 08:13:32
c语言编程之栈(链表实现)

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

  #include"stdio.h"
typedef int element; //define a struct descirbe a stack used by linklist
typedef struct Stack_linklist{
element data;
struct Stack_linklist *next;
}*Stack; //define a struct desribe a stack top number
typedef struct Stack_top{
element top;
}*Top;
element pop(Stack pStack,Top pTop)
{
Stack P,K;
K=pStack->next;
printf("pop data:%d\n",pStack->next->data);
pStack->next=pStack->next->next;
free(K);
printf("pop position:%d\n",pTop->top);
--pTop->top;
} element Init(Stack *p_Stack,element num,Top pTop)
{
pTop->top=-;
Stack P,pStack;
pStack=*p_Stack;
int i=;
if(num<)
{
printf("please input right number\n");
}
for(;i<num;i++)
{
P=(Stack)malloc(sizeof(struct Stack_linklist));
pStack->next=P;
pStack=pStack->next;
pTop->top++;
pStack->data=i;
printf("pStack->data:%d\n",pStack->data);
}
pStack->next=NULL;
return ;
}
element push(Stack *pStack,element num,Top pTop)
{
Stack P,k,M;
M=(Stack)malloc(sizeof(struct Stack_linklist));
P=*pStack;
k=P->next;
P->next=M;
M->next=k;
M->data=num;
pTop->top++;
printf("push position:%d data:%d\n",pTop->top,M->data);
}
element Print(Stack pStack)
{
Stack P;
P=pStack->next;
while(P)
{
printf("data:%d\n",P->data);
P=P->next;
}
}
element main()
{
Stack P;
Top pTop;
pTop=(Top)malloc(sizeof(struct Stack_top));
P=(Stack)malloc(sizeof(struct Stack_linklist));
P->next=NULL;
Init(&P,,pTop);
Print(P);
push(&P,,pTop);
push(&P,,pTop);
push(&P,,pTop);
push(&P,,pTop);
push(&P,,pTop);
Print(P);
pop(P,pTop);
pop(P,pTop);
Print(P);
}