#include<stdio.h>
#include<stdlib.h>
typedef struct My_Stack *PStack;
struct My_Stack
{
int Data;
PStack Next;
} ;
PStack Create_Stack()
{
PStack s;
s=(PStack)malloc(sizeof(struct My_Stack));
s->Next=NULL;
return s;
}
int IsEmpty(PStack s)
{
return(s->Next==NULL);
}
int Stack_Pop(PStack s)
{
if(IsEmpty(s)==1)
{
printf("堆栈空\n");
return NULL;
}
else
{
struct My_Stack *p;
int TopElem;
p=s->Next;
s->Next=p->Next;
TopElem=p->Data;
free(p);
return TopElem;
}
}
void Stack_Push(PStack s,int Elem)
{
struct My_Stack *p;
p=(PStack)malloc(sizeof(struct My_Stack));
p->Data=Elem;
p->Next=s->Next;
s->Next=p;
}
void Stack_ReadAll(PStack s)
{
if(IsEmpty(s)==1)
{
printf("堆栈空\n");
}
else
{
struct My_Stack *p;
p=s->Next;
while((p->Next)!=NULL)
{
printf("%d ",p->Data);
p=p->Next;
}
printf("%d",p->Data);
}
}
int main()
{
struct My_Stack *Stack1=Create_Stack();
while(1)
{
printf("输入需要的操作:\nA.显示堆栈状态\nB.Push\nC.Pop\nD.退出\n");
char c;
scanf("%c",&c);
if(c=='A')
{
printf("堆栈状态:");
Stack_ReadAll(Stack1);
}
else if(c=='B')
{
printf("输入:");
int a;
scanf("%d",&a);
Stack_Push(Stack1,a);
}
else if(c=='C')
{
int a=Stack_Pop(Stack1);
printf("输出:%d",a);
}
else if(c=='D')
{
break;
}
else
{
printf("无效输入\n");
}
char m=getchar();
}
return 0;
}
C语言实现堆栈链式存储
最新推荐文章于 2023-03-21 10:52:02 发布