c语言存储结构的实现,(C语言)栈的链式存储结构的实现
#includetypedef struct Stack_Linklist{
int data;
struct Stack_Linklist *next;
}Node,*pNode;
typedef struct Stack{
pNode pTop;
pNode pBottom;
}Stack,*pStack;
void Initstack();//初始化;
int Isempty();//判斷棧是否為空
void Push();//壓棧
int Pop();//出棧
int Gettop();//get棧頂元素
void Traverse();//從棧頂遍歷到棧底
int main(void)//測試
{
int val;
Stack s1;
Initstack(&s1);//初始化
if(Isempty(&s1))//判斷棧空
printf("棧為空!\n");
else printf("棧不空!\n");
printf("輸入壓棧元素:");//壓棧1
scanf("%d",&val);
Push(&s1,&val);
printf("輸入壓棧元素:");//壓棧2
scanf("%d",&val);
Push(&s1,&val);
printf("輸入壓棧元素:");//壓棧3
scanf("%d",&val);
Push(&s1,&val);
if(Isempty(&s1))//判斷棧空
printf("棧為空!\n");
else printf("棧不空!\n");
if(Pop(&s1,&val))
printf("出棧成功,出棧元素為:%d\n",val);
else printf("棧為空,出棧失敗!\n");
if(Isempty(&s1))//判斷棧空
printf("棧為空!\n");
else printf("棧不空!\n");
if(Gettop(&s1,&val))//Get棧頂元素
printf("棧頂元素為%d\n",val);
else printf("棧為空!\n");
Traverse(&s1);
return 0;
}
//初始化,pBottom指向棧底,pTop指向棧頂,棧底元素next指針設置為空
void Initstack(pStack ps1)
{
ps1->pBottom=(pNode)malloc(sizeof(Node));
if(ps1->pBottom==NULL){
printf("動態內存分配失敗!\n");
exit(-1);
}
else{
ps1->pTop=ps1->pBottom;
ps1->pBottom->next=NULL;
return;
}
}
//判斷棧是為空,空返回1,不空返回0
int Isempty(pStack ps1)
{
if(ps1->pTop==ps1->pBottom)
return 1;
else return 0;
}
//壓棧;
void Push(pStack ps1,int *pVal)
{
pNode p;
p=ps1->pTop;
ps1->pTop=(pNode)malloc(sizeof(Node));
ps1->pTop->data=*pVal;
ps1->pTop->next=p;
return;
}
//出棧,用val返回出棧元素值,成功返回1,失敗返回0
int Pop(pStack ps1,int *pVal)
{
pNode p;
if(Isempty(ps1))
return 0;
else
{
p=ps1->pTop;
*pVal=ps1->pTop->data;
ps1->pTop=ps1->pTop->next;
free(p);
return 1;
}
}
//get棧頂元素,用val返回,成功返回1,失敗返回0
int Gettop(pStack ps1,int *pVal)
{
if(Isempty(ps1))
return 0;
else
{
*pVal=ps1->pTop->data;
return 1;
}
}
//從棧頂遍歷到棧底
void Traverse(pStack ps1)
{
pNode p;
if(Isempty(ps1))
printf("棧為空!\n");
else
{
printf("從棧頂遍歷到棧底:");
for(p=ps1->pTop;p!=ps1->pBottom;p=p->next)
printf("%d ",p->data);
printf("\n");
}
}
總結
以上是生活随笔為你收集整理的c语言存储结构的实现,(C语言)栈的链式存储结构的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高度为5的3阶b树含有的关键字个数_数据
- 下一篇: 概要设计说明书_没有什么比牙签更好的设计