線性表 List 棧的順序儲存

2021-09-30 14:11:06 字數 2567 閱讀 4129

棧的定義:棧是一種特殊的線性表,棧只能在棧頂一段進行操作(先進後出)。

棧頂(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...