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...