資料結構03棧的基本操作

2021-03-03 23:54:00 字數 2726 閱讀 9236

院系專業

姓名_林楨曦學號___106052010235**級班年____月____日

編寫棧的基本操作函式(分別用順序和鏈結兩種方式實現)呼叫進棧函式建立乙個棧,讀取棧頂元素,刪除棧中元素,並且輸出棧中所有元素。

順序棧:

(1)建立空棧 int initstack(sqstack &s)(2)進棧 void push(sqstack &s,int e)(3)出棧 int pop(sqstack *s,int e)(4)輸出 void outputstack(sqstack *s)鏈棧:(1)建立空棧void initstack(lnode *s)

(2)進棧void push(lnode *s, int x)(3)出棧void pop(lnode *s, int *x)(4)輸出void outputstack(lnode *s)輸入形式:整型數。

(1)adt sqstack

結構關係:r=

基本操作:

initstack(sqstack &s)操作前提:s是乙個未初始化的順序棧

操作結果:將s初始化為乙個空的順序棧

push(sqstack *s, int e)操作前提:順序棧s已存在

操作結果:將元素e插入到順序棧中

pop(sqstack *s,int *e)操作前提:順序棧s已存在

操作結果:將順序棧s中棧頂元素刪除,刪除的元素值通過e返回outputstack(sqstack *s)操作前提:順序棧s已存在

操作結果:將順序棧s中的元素顯示到螢幕上

}adt lnode

結構關係:r=

基本操作:

initstack(lnode&s)

操作前提:s是乙個未初始化的鏈棧

操作結果:將s初始化為乙個空的鏈棧

push(lnode *s, int e)操作前提:鏈棧s已存在

操作結果:將元素e插入到鏈棧中

pop(lnode *s,int *e)

操作前提:鏈棧s已存在

操作結果:將鏈棧s中棧頂元素刪除,刪除的元素值通過e返回outputstack(lnode *s)操作前提:鏈棧s已存在

操作結果:將鏈棧s中的元素顯示到螢幕上

}(2)順序棧:

本程式包含6個函式:

主函式main()

初始化順序棧函式initstack()

進棧函式push()

出棧函式pop()

輸出棧中元素函式 outputstack()各函式呼叫關係:主函式main呼叫其他四個函式鏈棧:本程式包含6個函式:

主函式main()

初始化順序棧函式initstack()

進棧函式push()

出棧函式pop()

輸出棧中元素函式 outputstack()各函式呼叫關係:主函式main呼叫其他四個函式(3)順序棧:

主函式的偽碼

main()

sqstack;

基本操作的偽碼演算法

(1)初始化

int initstack(sqstack &s)(2)進棧

void push(sqstack &s,int e)(4)輸出元素

void outputstack(sqstack *s)鏈棧:型別定義

typedef struct lnode

lnode;

基本操作的偽碼演算法

(1)初始化

int initstack(lnode &s)(2)進棧

void push(lnode &s,int x)(4)輸出元素

void outputstack(lnode *s)}順序棧:除錯是出現錯誤,經過檢查發現在某些地方分號用中文表示。

鏈棧:出現空指標問題,記憶體不能讀取等

(1)順序棧:

程式名為test3.exe,程式執行過程如下:

因為構造順序棧用for迴圈,呼叫進棧函式,出棧函式是棧頂元素的值,所以呼叫相關函式後,結果直接輸出到螢幕上;

(2)鏈棧:

程式名為test3-2.exe,程式執行過程如下:

提示使用者輸入鏈棧元素個數;

使用者按要求輸入乙個整型數;

程式用輸入的整型數構建乙個鏈棧,並輸出棧頂元素和棧中的所有元素;

呼叫出棧函式,刪除棧頂,顯示棧中元素;

順序棧:

不用使用者輸入數值,呼叫函式便可得出結果,下面是程式執行結果的截圖:

鏈棧:(1)建立空鏈棧,程式執行後螢幕顯示:輸入鏈棧元素個數輸入6後,

螢幕顯示建立後的鏈棧的棧頂元素:6

棧中元素:6 5 4 3 2 1

(2)出棧螢幕顯示:刪除鏈棧的元素

呼叫pop函式之後,螢幕顯示:此時棧中的元素為:5 4 3 2 1(3)退出按任意鍵退出程式

資料結構(c語言版)

源程式檔案如下:

順序棧:

#include

#include

#define stackincrement 100#define stack_init_size 10typedef struct sqstacksqstack;

int initstack(sqstack &s)void push(sqstack &s,int e)*

}int pop(sqstack *s,int e)e=*--s->top;

--s->stacksize;

return 1;

}void outputstack(sqstack *s){ int i;

int *q;

q=s->top-1;

資料結構棧或佇列的基本操作

附錄 可包括源程式清單或其它說明 實驗源程式 如下 第一題 include include include define stacksize 100 typedef int stacktype typedef structseq stack seq stack creatstack else voi...

資料結構棧和佇列基本操作

實驗二棧和佇列 棧的順尋儲存操作 include stdio.h include stdlib.h define stack init size 100 define stackincrement 10 typedef struct sqstack void initstack sqstack s ...

資料結構實驗二棧基本操作

一 實驗目的 掌握棧的基本操作 初始化 判空 判滿 入棧 出棧 取棧頂元素等運算。二 實驗要求包含有標頭檔案和main函式 1.格式正確,語句採用縮排格式 2.設計子函式實現題目要求的功能 3.編譯 連線通過,熟練使用命令鍵 4.執行結果正確,輸入輸出有提示,格式美觀。三 實驗裝置 材料和工具 1....