資料結構(順序棧)

2021-10-01 04:45:21 字數 3412 閱讀 5080

順序表

順序表是在計算機記憶體中以陣列的形式儲存的線性表,線性表的順序儲存是指用一組位址連續的儲存單元依次儲存線性表中的各個元素、使得線性表中在邏輯結構上相鄰的資料元素儲存在相鄰的物理儲存單元中,即通過資料元素物理儲存的相鄰關係來反映資料元素之間邏輯上的相鄰關係,採用順序儲存結構的線性表通常稱為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的儲存單元中。在寫順序表的時候,需要對結構體有一定的了解(這裡就不做過多的結構體介紹)

棧的定義

棧(stack)又稱堆疊,它是一種運算受限的線性表,其限制是僅允許在表的一端進行插入和刪除運算。人們把此端稱為棧頂,棧頂的第乙個元素被稱為棧頂元素,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱為進棧或入棧,它是把該元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱為出棧或退棧,它是把棧頂元素刪除掉,使其下面的相鄰元素成為新的棧頂元素。

一、定義順序棧

ps:用順序表來實現棧

typedef

int elemtype;

#define stacksize 10

typedef

struct stack

stack,

*stackptr;

二、順序棧所實現的功能

1.順序棧初始化

int

init_stack

(stackptr stack)

//初始化

2.入棧

int

push_stack

(stackptr stack,elemtype val)

//入棧

3.出棧

int

pop_stack

(stackptr stack)

//出棧

4.獲得棧頂元素

int

gettop_stack

(stackptr stack)

//獲取棧頂

5.申請新空間

static

int(stackptr stack)

//申請空間

free

(stack-

>data)

; stack-

>data = p;

p =null

; stack-

>stacksize*=2

;return

true

;}

6.清空順序棧

int

clear_stack

(stackptr stack)

//清空

7.銷毀順序棧

int

destroy_stack

(stackptr stack)

//銷毀

8.判空

int

empty_stack

(stackptr stack)

//判空

else

}

9.判滿

static

intfull_stack

(stackptr stack)

//判滿

else

}

#include

#include

#include

typedef

int elemtype;

#define stacksize 10

typedef

struct stack

stack,

*stackptr;

intinit_stack

(stackptr stack)

//初始化

intpush_stack

(stackptr stack,elemtype val)

//入棧

intpop_stack

(stackptr stack)

//出棧

intgettop_stack

(stackptr stack)

//獲取棧頂

intempty_stack

(stackptr stack)

//判空

else

}static

int(stackptr stack)

//申請空間

free

(stack-

>data)

; stack-

>data = p;

p =null

; stack-

>stacksize*=2

;return

true;}

static

intfull_stack

(stackptr stack)

//判滿

else

}int

clear_stack

(stackptr stack)

//清空

intdestroy_stack

(stackptr stack)

//銷毀

intmain()

printf

("%d\n"

,gettop_stack

(&st));

pop_stack

(&st)

;pop_stack

(&st)

;pop_stack

(&st)

;pop_stack

(&st)

;pop_stack

(&st)

;pop_stack

(&st)

;printf

("%d\n"

,gettop_stack

(&st));

push_stack

(&st,10)

;printf

("%d\n"

,gettop_stack

(&st));

return0;

}

資料結構 順序棧

編寫乙個程式,實現順序棧 假設棧中元素型別為char 的各種基本運算。並完成下面功能 1 初始化棧s 2 判斷棧s是否非空 3 依次進棧元素a,b,c,d,e 4 判斷棧s是否非空 5 輸出棧長度 6 輸出從棧頂到棧底元素 7 輸出出棧序列 8 判斷棧s是否非空 9 釋放棧。include incl...

資料結構 順序棧

構造乙個順序棧 當輸入9999時,結束入棧操作 輸出棧中元素,顯示棧頂元素,刪除棧頂元素 include include include define stack init size 100 define ok 1 define error 0 typedef int selemtype 順序棧結構...

資料結構 順序棧

棧是一種只能在一端進行插入或刪除操作的線性表。其中允許進行插入或刪除操作的一端稱為棧頂 top 棧頂是由乙個稱為棧頂指標的位置指示器來指示,它是動態變化的。表的另一端稱為棧底,棧底是固定不變的。先進後出 filo include include define maxsize 100 typedef ...