c语言数据结构 栈
#include<stdio.h>
#include<stdlib.h>
typedef struct NODE
{
int Lsize;
int man;
struct NODE *next;
}Stack;
void LnltStack(Stack *stack)
{
stack->Lsize = 0;
stack->man = 0;
stack->next = NULL;
}
Stack *PushStack(Stack *stack ,int men)
{
if(stack->Lsize == 0)
{
stack->Lsize += 1;
stack->man = men;
stack->next = NULL;
return stack;
}
else
{
printf("正在分配内存.....\n");
Stack* new = malloc (sizeof (Stack));
if(!new)
exit(1);
printf("分配内存成功!\n");
new->Lsize = stack->Lsize + 1;
new->man = men;
new->next = stack;
return new;
}
}
Stack* PopStack(Stack *stack)
{
printf("弹出%d\n",stack->man);
printf("弹出数据成功.....\n");
stack = stack->next;
return stack;
}
void ClearStack(Stack *stack)
{
Stack *new;
while(stack->next != NULL)
{
new = stack->next;
free(stack);
stack = new;
}
free(stack);
if(JudegStack(stack))
printf("栈清理完毕!");
}
int JudegStack( Stack *stack)
{
if(!stack->next)
return 1;
else
return 0;
}
void LntStack(Stack *stack)
{
printf("栈长度为%d \n",stack->Lsize);
}
int main()
{
int ma,am;
Stack *stack = malloc (sizeof (Stack));
LnltStack(stack);
printf("初始化链表.....\n");
printf("插入链表.,...\n");
for(ma=1;ma <= 5;ma++)
{
printf("插入数值%d\n",ma);
stack=PushStack(stack,ma);
}
LntStack(stack);
printf("弹出链表.....\n");
stack = PopStack(stack);
printf("清空链表....\n");
ClearStack(stack);
return 0;
}