首先要認識到viod* p[2];
表示的是兩個建立乙個包含兩個元素的陣列,每個元素是void* 型別。即
採用份檔案的形式使用vs2013 c語言 編寫void
* p[2]
;//和這種寫法相同
void
*p0;
void
*p1;
#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 初...