日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言存储结构的实现,(C语言)栈的链式存储结构的实现

發布時間:2024/7/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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语言)栈的链式存储结构的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。