資料結構棧 線性表實現

2021-08-01 14:57:41 字數 2785 閱讀 9906

棧的定義:棧是一種特殊的表這種表只在表頭進行插入和刪除操作。因此,表頭對於棧來說具有特殊的意義,稱為棧頂。相應地,表尾稱為棧底。不含任何元素的棧稱為空棧。 

而本次給大家介紹用線性表實現的棧。

如圖

這裡介紹雙向鍊錶的常用操作:

l 建立棧

l 銷毀棧

l 清空棧

l 壓棧

l 出棧

l 返回棧頂元素

l 返回棧的大小

l 返回棧的最大長度

**總分為三個檔案:

seqstack.h : 放置功能函式的宣告,以及表的宣告 

seqstack.c : 放置功能函式的定義

main.c     : 主函式,使用功能函式完成各種需求,一般用作測試

整體結構圖為:

這裡詳細說下壓棧操作,出棧操作和返回棧頂元素操作:

壓棧操作:

如圖:

出棧操作:

如圖:

返回棧頂元素:

如圖:

如果(表頭用作棧底,表尾用作棧頂)時,每次操作都在表尾部操作,不會移動元素,如果(表頭用作棧頂,表尾用作棧底)時,每次操作都會移動表元素,所以第一種方案較合適。

ok! 上**:

seqstack.h : 

[cpp]view plain

copy

#ifndef _seqstack_h_

#define _seqstack_h_

typedef

void

seqstack;  

seqstack* seqstack_create(int

capacity);  

void

seqstack_destroy(seqstack* stack);  

void

seqstack_clear(seqstack* stack);  

intseqstack_push(seqstack* stack, 

void

* item);  

void

* seqstack_pop(seqstack* stack);  

void

* seqstack_top(seqstack* stack);  

intseqstack_size(seqstack* stack);  

intseqstack_capacity(seqstack* stack);  

#endif

seqstack.c :

[cpp]view plain

copy

#include "seqlist.h"

#include "seqstack.h"

seqstack* seqstack_create(int

capacity)  

void

seqstack_destroy(seqstack* stack)  

void

seqstack_clear(seqstack* stack)  

intseqstack_push(seqstack* stack, 

void

* item)  

void

* seqstack_pop(seqstack* stack)  

void

* seqstack_top(seqstack* stack)  

intseqstack_size(seqstack* stack)  

intseqstack_capacity(seqstack* stack)    

main.c :

[cpp]view plain

copy

#include 

#include 

#include "seqstack.h"

intmain(

void

)    

printf("top:      %d\n"

, *(

int*)seqstack_top(stack));  

printf("capacity: %d\n"

, seqstack_capacity(stack));  

printf("length:   %d\n"

, seqstack_size(stack));  

while

(seqstack_size(stack) > 0)  

printf("\n"

);  

seqstack_destroy(stack);  

return

0;  

}  

考研資料結構 線性表 棧

1.棧是一種線性表,主要特點就是只允許在一端進行插入或刪除操作的線性表。2.棧頂 top 線性表允許進行插入和刪除的一端 棧底 bottom 是固定的,不允許進行插入和刪除的一端 採用順序儲存的棧被稱為 順序棧 通常順序儲存結構由乙個 一維陣列 和乙個記錄 棧頂 元素位置的變數組成。1.結構定義 d...

資料結構 線性結構(線性表 棧與佇列)

線性表的抽象定義集合a和集合b的並集操作線性表的順序儲存的結構 位址計算獲得元素操作 getelem插入操作 listinsert刪除操作 lisedelete優缺點比較。線性表的單鏈表儲存結構 linklistgetelemlistinsertlistdeletecreatelisthead 頭插...

資料結構 特殊的線性表 棧

棧是一種特殊的線性表,只允許在一段插入和刪除,所以一般畫圖總把棧化成乙個杯子,在杯口進入元素,在杯口移出元素。故有三個概念 因為線性表可以用順序儲存結構和鏈式儲存結構表示,因此棧也可以。define false 0 define true 1 define stack size 50 define ...