国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

棧之鏈式存儲基本操作

2019-11-14 08:51:43
字體:
來源:轉載
供稿:網友
#include <stdio.h>#include <stdlib.h>//棧的鏈式存儲結構typedef char ElemType;typedef struct linknode{    ElemType data;//數據域    struct linknode *next;//指針域}LiStack;//初始化棧void InitStack(LiStack *&s){    s=(LiStack *)malloc(sizeof(LiStack));    s->next=NULL;}//銷毀棧void DestroyStack(LiStack *&s){    LiStack *p=s,*q=s->next;    while(q!=NULL)    {        free(p);        p=q;        q=p->next;    }    free(p);}//判斷棧是夠為空bool StackEmpty(LiStack *s){    return (s->next==NULL);}//進棧void Push(LiStack *&s,ElemType e){    LiStack *p=s;    p=(LiStack *)malloc(sizeof(LiStack));//新建元素p    p->data=e;    /************************/    p->next=s->next;    s->next=p;    /************************/}//出棧bool Pop(LiStack *&s,ElemType &e){    LiStack *p;    if(s->next==NULL)        return false;    p=s->next;    e=p->data;    /************************/    s->next=p->next;    free(p);    /************************/}//取棧頂元素bool GetTop(LiStack *s,ElemType &e){    LiStack *p;    if(s->next==NULL)        return false;    p=s->next;    e=p->data;    return true;}int main(){	ElemType e;	LiStack *s;	PRintf("棧s的基本運算如下:/n");	printf("  (1)初始化棧s/n");	InitStack(s);	printf("  (2)棧為%s/n",(StackEmpty(s)?"空":"非空"));	printf("  (3)依次進棧元素a,b,c,d,e/n");	Push(s,'a');	Push(s,'b');	Push(s,'c');	Push(s,'d');	Push(s,'e');	printf("  (4)棧為%s/n",(StackEmpty(s)?"空":"非空"));	printf("  (5)出棧序列:");	while (!StackEmpty(s))	{		Pop(s,e);		printf("%c ",e);	}	printf("/n");	printf("  (6)棧為%s/n",(StackEmpty(s)?"空":"非空"));	printf("  (7)釋放棧/n");	DestroyStack(s);    return 0;}

運行結果:

心得:

棧的鏈式存儲結構是沒有到棧頂的情況的,可以無限長。其實無論進棧出棧還是刪除棧元素,用到的操作都是單鏈表的基本操作,進棧就是頭插法,出棧就是刪除第一個元素。另外出棧和去棧頂元素時要注意判斷棧空的情況。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桦南县| 宁陕县| 汉中市| 清徐县| 长岭县| 侯马市| 唐河县| 金寨县| 临潭县| 廉江市| 平南县| 梁平县| 达州市| 治多县| 潜山县| 彰化市| 靖州| 石首市| 邹平县| 奈曼旗| 博野县| 茌平县| 环江| 石楼县| 普定县| 阿拉善盟| 潜江市| 斗六市| 马公市| 怀安县| 勃利县| 辽宁省| 康乐县| 河源市| 武宁县| 左云县| 乌拉特前旗| 南康市| 石泉县| 策勒县| 庄河市|