棧的順序儲存

2021-10-11 18:34:50 字數 2703 閱讀 5231

可以用陣列來表示棧的結構。定義乙個結構體,其中有乙個陣列,動態分配記憶體。top記錄棧頂。

標頭檔案

#ifndef _head_h

#define _head_h

#define minsize 5

//定義最小長度為5

#define empty -1

//棧空情況

typedef

int elementtype;

typedef

struct node* stack;

typedef

struct nodenode;

stack createstack

(void);

void

push

(stack ss, elementtype x)

;void

pop(stack ss)

;void

freespace

(stack ss)

;void

display

(stack ss)

;void

makeempty

(stack ss)

;int

isempty

(stack ss)

;int

isfull

(stack ss)

;void

clean

(void);

#endif

操作集

#include

#include

#include

"head.h"

stack createstack

(void

) s =

(stack)

malloc

(sizeof

(node));

if(s ==

null

) s->array =

(elementtype*

)malloc

(length*

sizeof

(elementtype));

if(s->array ==

null

) s->arraymaxlength = length;

makeempty

(s);

return s;

}void

push

(stack ss, elementtype x)

ss->array[

++ss->top]

= x;

}void

pop(stack ss)

ss->top--;}

void

clean

(void

)int

isempty

(stack ss)

intisfull

(stack ss)

void

makeempty

(stack ss)

void

display

(stack ss)if(

isempty

(ss)

)int length = ss->top +1;

printf

("%d data:"

, length)

;for

(int i =

0; i < length; i++)}

printf

("\n");

}void

freespace

(stack ss)

}

主函式

#include

#include

"head.h"

intmain

(void

)display

(s);

printf

("*******************************************\n");

printf

("彈棧操作\n");

pop(s)

;display

(s);

printf

("*******************************************\n");

printf

("清空棧操作\n");

makeempty

(s);

display

(s);

printf

("*******************************************\n");

printf

("釋放記憶體操作\n");

freespace

(s);

s->array =

null

;//釋放記憶體只是將指標指向的記憶體中的資料清了,指標並沒有指向null,在這裡置null,不要讓指標是乙個野指標。

下標大的元素是接近棧頂的。

棧的順序儲存

棧的順序儲存就是用連續的空間儲存棧中的結點,一般都是用陣列來實現這種連續空間的。為了保證棧的filo特點,所以進棧出棧總是在棧頂一端進行。因此,不會引起類似順序表中的大量資料的移動。用陣列實現棧結構時,棧底bottom可取下標為0的陣列元素,假定用top給出棧頂元素的下標位址,即棧頂指標,那麼初始化...

棧的順序儲存

ifndef seqstack h define seqstack h include include include 陣列去模擬棧的順序儲存 define max size 1024 define seqstack true 1 define seqstack false 0 typedef st...

棧的順序儲存

seqstack.h pragma once include include include ifdef cplusplus extern c typedef void seqstack 使用陣列高下標的位置作為棧頂,因為插入和刪除操作中不需要移動陣列中的元素 初始化 seqstack init s...