順序表棧C語言實現

2022-05-22 10:54:10 字數 2614 閱讀 3414

/*

* seqstack.h

* * created on: 2023年8月1日

* author: administrator

*/#ifndef seqstack_h_

#define seqstack_h_

//陣列去模擬棧的順序儲存, 有陣列的後面模擬棧頂 ,避免資料頻繁移動

#define max_size 1024

#define seq_stack_true 1

#define seq_stack_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);

//判斷是否為空

int isempty(seqstack *stack);

//返回棧中元素個數

int size_seqstack(seqstack *stack);

//清空棧

void clear_seqstack(seqstack *stack);

//銷毀

void freespace_seqstack(seqstack *stack);

#endif /* seqstack_h_ */

/*

* seqstack.c

* * created on: 2023年8月1日

* author: administrator

*/#include "seqstack.h"

#include #include #include //棧的初始化

seqstack *init_seqstack()

stack->size = 0;

return stack;

}//入棧

void push_seqstack(seqstack *stack, void *data)

if(stack->size == max_size)

if(data == null)

stack->data[stack->size] = data;

stack->size++;

}//返回棧頂元素

void *top_seqstack(seqstack *stack)

if(stack->size == 0)

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

}//出棧

void pop_seqstack(seqstack *stack)

if(stack->size == 0)

stack->data[stack->size-1] = null;

stack->size--;

}//判斷是否為空

int isempty(seqstack *stack)

if(stack->size == 0)

return seq_stack_false;

}//返回棧中元素個數

int size_seqstack(seqstack *stack)

//清空棧

void clear_seqstack(seqstack *stack)

for(int i = 0;i < stack->size; i++)

stack->size = 0;

}void freespace_seqstack(seqstack *stack)

free(stack);

}

/*

* main.c

* * created on: 2023年8月1日

* author: administrator

*/#include "seqstack.h"

#include #include #include typedef struct person person;

int main();

person p2 = ;

person p3 = ;

person p4 = ;

person p5 = ;

//入棧

push_seqstack(stack, &p1);

push_seqstack(stack, &p2);

push_seqstack(stack, &p3);

push_seqstack(stack, &p4);

push_seqstack(stack, &p5);

//輸出

while(size_seqstack(stack) > 0)

//釋放記憶體

freespace_seqstack(stack);

system("pause");

return 0;

}

C語言 實現 順序棧

seqstack.h 標頭檔案宣告如下 include typedef int datatype 自定義資料型別,假定為整型 typedef struct seqstack 順序棧定義 seqstack typedef struct seqstack pseqstack 順序棧的指標型別 建立乙個容...

C語言實現順序棧

順序棧,就是用一組位址連續的儲存單元來存放棧元素,然後用乙個棧結構去維護乙個棧。在c中,可用動態開闢的陣列去表示,維護的棧結構需要有乙個棧底和乙個棧頂指標。因為開闢乙個陣列需要事先知道它的大小,所以棧結構裡就必須還有乙個整型變數來表示當前棧的儲存容量,再可定義乙個變數用來擴充棧的最大容量。實現如下 ...

C語言實現順序棧

棧和佇列是兩種重要的線性結構。從資料結構的角度看,棧和佇列也是線性表,其特殊性在於棧和佇列的操作位置都在特定的位置。引用自嚴蔚敏的資料結構與演算法教材 棧的結構體定義 typedef struct stack sqstack 和鍊錶類似 我們首先要初始化順序棧 sqstack initsqstack...