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

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

棧之鏈式存儲基本操作

2019-11-11 07:02:00
字體:
來源:轉載
供稿:網友
#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;}

運行結果:

心得:

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌都县| 芜湖县| 兴义市| 南京市| 洛川县| 平远县| 三门县| 鸡泽县| 文昌市| 蓝山县| 拉萨市| 大连市| 祁阳县| 永和县| 连江县| 清丰县| 汉中市| 汝阳县| 南京市| 马关县| 高邮市| 海盐县| 尼木县| 郴州市| 苏尼特左旗| 平谷区| 靖边县| 德州市| 温宿县| 咸宁市| 罗城| 当雄县| 怀来县| 通许县| 涿鹿县| 丹寨县| 吉安县| 嘉峪关市| 德保县| 土默特左旗| 湖口县|