鏈棧的建立與基本操作

2021-09-24 15:52:15 字數 1983 閱讀 8637

1.定義結點結構體,含有資料和指標兩個成員變數;

2.定義棧結構體,含有棧頂指標和棧中元素個數兩個成員變數,其中棧頂指標是結點結構體指標型別;

3.棧頂指標當作頭指標指向第乙個元素,利用頭插法實現入棧;

/*

專案名稱:鏈棧的建立與基本操作

編譯環境:vc++ 2008

作者相關:。。。

最後修改:2019.6.21

學習目標:初始化、銷毀、清空、判空、求長、返回棧頂元素、插入元素、刪除元素、輸出棧中元素

注意事項:1.測試所有功能是否正常

*/#include #include #include #define ok 1

#define error 0

typedef int elemtype;

typedef bool status;

//定義結點

typedef struct snodesnode,*slnode;

//定義棧

typedef structslinkstack;

status init_lstack(slinkstack *s);

status clear_lstack(slinkstack *s);

status destroy_lstack(slinkstack *s);

status empty_lstack(slinkstack s);

int length_lstack(slinkstack s);

status gettop_lstack(slinkstack s,elemtype *e);

status push(slinkstack *s,elemtype e);//在棧頂插入元素,相當於不帶頭結點的頭插法

status pop(slinkstack *s,elemtype *e);

status visit(elemtype c);

status out_lstack(slinkstack s);

int main()

out_lstack(s);

int k=length_lstack(s);

printf("棧的長度為:%d \n\n",k);

gettop_lstack(s,&e);

printf("棧頂元素為:%d \n\n",e);

pop(&s,&e);

printf("刪除的元素為:%d \n\n",e);

out_lstack(s);

clear_lstack(&s);

destroy_lstack(&s);

return 0;

}status init_lstack(slinkstack *s)

status clear_lstack(slinkstack *s)

s->top = null;

s->count = 0;

return ok;

}status destroy_lstack(slinkstack *s)

free(s->top);//銷毀最初建立的結點

鏈棧基本操作

棧基本概念 棧 stack 是限定在表尾進行插入和刪除操作的線性表 或單鏈表 只能在一段進行插入和刪除,因此不存在,在中間進行插入 棧頂 top 允許插入和刪除的一端。而另一端稱為棧底 bottom 空棧 不含任何資料元素的棧。後進先出 兩個基本操作 棧的插入操作 push 叫做進棧,或壓棧,或入棧...

鏈棧基本操作

棧 stack 是限定在表尾進行插入和刪除操作的線性表 或單鏈表 只能在一段進行插入和刪除,因此不存在,在中間進行插入 棧頂 top 允許插入和刪除的一端。而另一端稱為棧底 bottom 空棧 不含任何資料元素的棧。後進先出 棧的插入操作 push 叫做進棧,或壓棧,或入棧 刪除操作 pop 叫做出...

鏈棧的基本操作

初始化乙個資料元素為整形的鏈棧,並實現進棧 出棧 獲得棧頂元素等操作。通過控制台將1,2,3,4,5進棧,出棧兩次,獲得棧頂元素並輸出,6進棧,列印棧內的所有內容。include include define maxsize 100 define ok 1 define error 0 using ...