棧的順序儲存

2021-09-27 13:16:12 字數 2849 閱讀 1448

seqstack.h

#pragma once

#include

#include

#include

#ifdef __cplusplus

extern

"c";

typedef

void

* seqstack;

// 使用陣列高下標的位置作為棧頂,因為插入和刪除操作中不需要移動陣列中的元素

// 初始化

seqstack init_seqstack()

;// 入棧

void

push_seqstack

(seqstack stack,

void

*data)

;// 出棧

void

pop_seqstack

(seqstack stack)

;// 獲取棧頂元素

void

*top_seqstack

(seqstack stack)

;// 獲取棧的大小

intsize_seqstack

(seqstack stack)

;// 銷毀棧

void

destory_seqstack

(seqstack stack)

;#ifdef __cplusplus

}#endif

// __cplusplus

seqstack.cpp
#include

"seqstack.h"

// 初始化

seqstack init_seqstack()

memset

(stack,0,

sizeof

(struct sstack));

stack->size =0;

return stack;

}// 入棧

void

push_seqstack

(seqstack stack,

void

*data)if(

null

== data)

struct sstack *s =

(struct sstack *

)stack;

s->data[s->size]

= data;

s->size++;}

// 出棧

void

pop_seqstack

(seqstack stack)

struct sstack *s =

(struct sstack *

)stack;

if(s->size ==0)

s->data[s->size -1]

=null

; s->size--;}

// 獲取棧頂元素

void

*top_seqstack

(seqstack stack)

struct sstack *s =

(struct sstack *

)stack;

if(s->size ==

null

)return s->data[s->size -1]

;}// 獲取棧的大小

intsize_seqstack

(seqstack stack)

struct sstack *s =

(struct sstack *

)stack;

return s->size;

}// 銷毀棧

void

destory_seqstack

(seqstack stack)

free

(stack)

;}

測試
#define _crt_secure_no_warnings

#include

"stdio.h"

#include

"stdlib.h"

#include

"string.h"

#include

"seqstack.h"

struct person

;void

test()

;struct person p2 =

;struct person p3 =

;struct person p4 =

;struct person p5 =

;struct person p6 =

;// 資料入棧

push_seqstack

(stack ,

&p1)

;push_seqstack

(stack ,

&p2)

;push_seqstack

(stack ,

&p3)

;push_seqstack

(stack ,

&p4)

;push_seqstack

(stack ,

&p5)

;push_seqstack

(stack ,

&p6)

;// 輸出棧中所有元素

while

(size_seqstack

(stack)

>0)

printf

("size : %d\n"

,size_seqstack

(stack));

destory_seqstack

(stack)

; stack =

null;}

intmain()

棧的順序儲存

棧的順序儲存就是用連續的空間儲存棧中的結點,一般都是用陣列來實現這種連續空間的。為了保證棧的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...

棧的順序儲存

可以用陣列來表示棧的結構。定義乙個結構體,其中有乙個陣列,動態分配記憶體。top記錄棧頂。標頭檔案 ifndef head h define head h define minsize 5 定義最小長度為5 define empty 1 棧空情況 typedef int elementtype ty...