C语言 - 链栈 所有基本操作
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN 5
typedef struct Stack
{
int data;
struct Stack * top;
}Stack;
Stack * Push_Stack(Stack * S)
{
Stack * p;
int i;
S = (Stack *) malloc( sizeof(Stack) );
S->top = NULL;
for(i=0; i<LEN; i++)
{
p = (Stack *) malloc( sizeof(Stack) );
scanf("%d", &p->data);
p->top = S->top;
S->top = p;
}
return S;
}
void Insert_Stack(Stack * S)
{
Stack * p;
p = (Stack *) malloc( sizeof(Stack) );
scanf("%d", &p->data);
p->top = S->top;
S->top = p;
}
void Delete_Stack(Stack * S)
{
Stack * p;
p = S->top;
S->top = p->top;
free(p);
}
void Pop_Stack(Stack * S)
{
Stack * p;
p = S->top;
while(p)
{
printf("%d ", p->data);
p = p->top;
}
printf("\n");
}
int main(void)
{
Stack * S;
S = NULL;
printf("请输入%d个栈元素: ", LEN);
S = Push_Stack(S);
Pop_Stack(S);
printf("请输入插入栈顶的元素: ");
Insert_Stack(S);
Pop_Stack(S);
printf("删除栈顶元素:\n");
Delete_Stack(S);
Pop_Stack(S);
printf("\n");
system("pause");
return 0;
}