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