棧的定義:棧是一種特殊的線性表,棧只能在棧頂一段進行操作(先進後出)。
棧頂(top):允許操作的一端。
棧底(bottom):不允許操作的一端。
棧的常用操作
(1)建立棧
(2)銷毀棧
(3)清空棧
(4)入棧
(5)出棧
(6)獲取棧頂元素
(7)獲取棧的大小
棧的順序儲存模型
我們可以重複利用之前寫過的線性表順序儲存中的**,在此基礎上實現棧的順序儲存。
seqstack.h
#ifndef _seqstack_h_
#define _seqstack_h_
typedef
void seqstack;
typedef
void seqstacknode;
//建立棧
seqstack *seqstack_create(int capacity);
//銷毀棧
void seqstack_destroy(seqstack *stack);
//清空棧
void seqstack_clear(seqstack *stack);
//向棧中壓入元素
int seqstack_push(seqstack *stack, seqstacknode *item);
//從棧中彈出元素
seqstacknode *seqstack_pop(seqstack *stack);
//獲取棧頂元素
seqstacknode *seqstack_top(seqstack *stack);
//獲取棧的大小
int seqstack_size(seqstack *stack);
//獲取棧的容量
int seqstack_capacity(seqstack *stack);
#endif // !_seqstack_h_
seqstack.c
#include
#include
#include
#include "seqstack.h"
#include "seqlist.h"
//建立棧相當於建立乙個線性表
seqstack *seqstack_create(int capacity)
//銷毀棧相當於銷毀線性表
void seqstack_destroy(seqstack *stack)
//清空棧相當於清空線性表
void seqstack_clear(seqstack *stack)
//向棧中壓入元素相當於往線性表尾部插入元素
int seqstack_push(seqstack *stack, seqstacknode *item)
//從棧中彈出元素相當於從線性表尾部刪除元素
seqstacknode *seqstack_pop(seqstack *stack)
//獲取棧頂元素x相當於獲取線性表尾部的元素
seqstacknode *seqstack_top(seqstack *stack)
//獲取棧的大小相當於獲取線性表的實際長度
int seqstack_size(seqstack *stack)
//獲取棧的容量相當於獲取線性表的容量
int seqstack_capacity(seqstack *stack)
seqstack整合測試框架.c
#include
#include
#include
#include "seqstack.h"
void main()
for (i = 0; i < 5; i++)
}printf("capacity:%d\n", seqstack_capacity(stack));
printf("length:%d\n", seqstack_size(stack));
printf("top:%d\n", *((int *)seqstack_top(stack)));
while (seqstack_size(stack)>0)
printf("*tmp:%d\n", *((int *)tmp));
}return;
}
結果截圖 線性表的順序儲存 線性表的順序儲存結構
1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...
線性表順序儲存
線性表順序儲存結構的建立 插入結點 刪除結點 就地逆置。include stdio.h include malloc.h typedef struct slist,list void init list 線性表初始化 void insert list s,int p 線性表插入 void delet...
線性表順序儲存
時間複雜度效率 o 1 o logn o n o nlogn o n 2 o n 3 o 2 n o n o n n 線性表順序儲存 線性表 順序儲存 include include define maxsize 1024 typedef int elementtype typedef struct...