棧的順序儲存實現

2021-09-27 08:14:19 字數 3432 閱讀 1676

首先要認識到viod* p[2];表示的是兩個建立乙個包含兩個元素的陣列,每個元素是void* 型別。即

void

* p[2]

;//和這種寫法相同

void

*p0;

void

*p1;

採用份檔案的形式使用vs2013 c語言 編寫

#ifndef seqstack_h

#define seqstack_h

#include

#include

//先定義棧的最大儲存元素個數

#define max_size 1024

//巨集定義 真1 假0

#define seqstack_ture 1

#define seqstack_false 0

//用陣列來模擬順序儲存

typedef

struct seqstack

seqstack;

//初始化

seqstack *

init_seqstack()

;//入棧

void

push_seqstack

(seqstack * stack,

void

* data)

;//返回棧頂元素

void

*top_seqstack

(seqstack * stack)

;//出棧

void

pop_seqstack

(seqstack * stack)

;//判斷是否為空

intisempty

(seqstack *stack)

;//返回棧中當前元素個數

intsize_seqstack

(seqstack * stack)

;//清空棧

void

clear_seqstack

(seqstack * stack)

;//銷毀

void

free_seqstack

(seqstack * stack)

;#endif

#include

"seqstack.h"

//初始化

seqstack *

init_seqstack()

//初始化

for(

int i =

0; i < max_size; i++

) stack->size =0;

return stack;

}//入棧

void

push_seqstack

(seqstack * stack,

void

* data)

if(data ==

null)if

(stack->size == max_size)

stack->data[stack->size]

= data;

stack->size++;}

//返回棧頂元素

void

*top_seqstack

(seqstack * stack)

return stack->data[stack->size-1]

;}//出棧

void

pop_seqstack

(seqstack * stack)

stack->data[stack->size -1]

=null

; stack->size--;}

//判斷是否為空

intisempty

(seqstack *stack)

if(stack->size ==0)

else

}//返回棧中當前元素個數

intsize_seqstack

(seqstack * stack)

return stack->size;

}//清空棧

void

clear_seqstack

(seqstack * stack)

for(

int i =

0; i < max_size;i++

) stack->size =0;

}//銷毀

void

free_seqstack

(seqstack * stack)

free

(stack)

;}

#define _crt_secure_no_warnings

#include

#include

#include

#include

"seqstack.h"

typedef

struct person

person;

intmain

(void);

person p2 =

; person p3 =

; person p4 =

;//元素入棧

push_seqstack

(stack,

&p1)

;push_seqstack

(stack,

&p2)

;push_seqstack

(stack,

&p3)

;push_seqstack

(stack,

&p4)

;int size1 =

size_seqstack

(stack)

;printf

("size = %d\n"

, size1)

;/*/

clear_seqstack(stack);

size1 = size_seqstack(stack);

printf("size = %d\n", size1);

*///實現列印

while

(isempty

(stack)

== seqstack_false)

//當不為空時執行迴圈體

//銷毀

free_seqstack

(stack)

;printf

("\n");

system

("pause");

return0;

}

檔案結構為

執行完成的結果為

棧的順序儲存的實現

棧是一種先進後出的結構,他是一種特殊的線性表,棧的資料元素之間的一一對應的關係可以利用順序的儲存來表示,那麼可以利用陣列來實現棧資料結構。在第二種結構中,從陣列開始位置進行操作,對棧進行操作時會涉及到大量的陣列的移動和刪除,而第二種從尾部操作則會避免不必要的操作,所以我們選用第一種結構。同時由於棧是...

棧的順序儲存結構實現。

ifndef stack h define stack h define size 5 typedef structstack 初始化棧的儲存區 void stack init stack 清理棧的儲存區 void stack deinit stack 判斷棧是不是滿了 int stack full...

棧的順序儲存(陣列實現)

棧是只允許一一端進行操作的的線性表,首先強調的是棧是一種線性表,其次棧只限定在一端進行操作。initstack 初始化棧 stackempty 判斷棧空 push 進棧 pop 出棧 gettop 獲取棧頂元素 destorystack 銷毀棧 初始化typedef struct sqstack 初...