#ifndef __stack_h_
#define __stack_h_
#define size 5
typedef structstack;
//初始化棧的儲存區
void stack_init(stack *);
//清理棧的儲存區
void stack_deinit(stack *);
//判斷棧是不是滿了
int stack_full(const stack *);
//判斷棧是不是空的
int stack_empty(const stack *);
//獲得棧裡有效數字個數
int stack_size(const stack *);
//向棧放乙個數字
void stack_push(stack *, int);
//從棧獲得下乙個數字
int stack_pop(stack *);
//從棧裡獲得下乙個數字
int stack_top(const stack *);
#endif //__stack_h_
/* 順序物理結構棧演示
*/#include "stack.h"
//初始化棧的儲存區
void stack_init(stack *p_stack)
//清理棧的儲存區
void stack_deinit(stack *p_stack)
//判斷棧是不是滿了
int stack_full(const stack *p_stack)
//判斷棧是不是空的
int stack_empty(const stack *p_stack)
//獲得棧裡有效數字個數
int stack_size(const stack *p_stack)
//向棧放乙個數字
void stack_push(stack *p_stack, int num)
//從棧獲得下乙個數字
int stack_pop(stack *p_stack)
//從棧裡獲得下乙個數字
int stack_top(const stack *p_stack)
/* 棧測試
*/#include "stdio.h"
#include "stack.h"
int main()
; stack_init(&stk);
stack_push(&stk,1);
stack_push(&stk,3);
stack_push(&stk,5);
stack_push(&stk,7);
stack_push(&stk,25);
printf("數字個數是:%d\n",stack_size(&stk));
printf("判斷滿的結果是:%d\n",stack_full(&stk));
stack_top(&stk);
printf("top結果是:%d\n",stack_top(&stk));
printf("top結果是:%d\n",stack_top(&stk));
printf("pop結果是:%d\n",stack_pop(&stk));
printf("pop結果是:%d\n",stack_pop(&stk));
printf("pop結果是:%d\n",stack_pop(&stk));
printf("pop結果是:%d\n",stack_pop(&stk));
printf("pop結果是:%d\n",stack_pop(&stk));
printf("判斷空的結果是%d\n",stack_empty(&stk));
stack_deinit(&stk);
return 0;
}
棧的順序儲存結構實現(四)
18.11.17 棧是一種只限定在表尾進行插入和刪除的線性表,這裡的表尾指的是棧頂,而不是棧尾,所以棧又被稱為先進後出的線性表,也就是說棧是乙個類似於木桶之類存在,先放進去的後拿出來 我們通常用乙個變數top來標誌棧頂元素的變化,若棧的長度為stacksize,那麼top的值就必須小於stacksi...
棧的順序儲存結構及實現
棧是線性表的特例,棧只在棧頂進行插入及刪除操作,因此資料是後進先出。棧的順序儲存其實也是線性表順序儲存的簡化。棧的結構定義如下 進棧操作push,其 如下 插入元素e為新的棧頂元素 stauts push sqstack s,selemtype e s top 棧頂指標 1 s data s top...
棧的順序儲存結構
標頭檔案 函式的宣告 include include include define stacksize 100 typedef int elemtype typedef struct seqstack void initstack seqstack s 初始化棧 int stackempty seq...