chapter4棧與佇列 2 鏈棧實現

2021-09-27 21:33:24 字數 1998 閱讀 8456

elementtype.h 元素型別定義

#ifndef element_h_included

#define element_h_included

#define max_size 100

#define true 1

#define false 0

// 用來定義一些常用的資料元素

typedef

struct

elementtype;

#endif

// element_h_included

linkedstack.h 順序棧標頭檔案(包含棧資料結構、函式方法宣告)
#ifndef linkedstack_h_included

#define linkedstack_h_included

//鏈棧標頭檔案:定義鏈棧資料結構及常用操作

#include

#include

#include

"element.h"

//定義鏈棧的結點

typedef

struct stacknodestacknode;

//定義鏈棧結構

typedef

struct linkedstacklinkedstack;

//初始化

void

initlinkedstack

(linkedstack* linkedstack)

;//壓棧操作 返回成功與否

intpushlinkedstack

(linkedstack* linkedstack,elementtype element)

;//出棧操作 返回成功與否 用乙個指標儲存出棧元素

intpoplinkedstack

(linkedstack* linkedstack,elementtype *element)

;//清空棧

void

clearlinkedstack

(linkedstack* linkedstack)

;//刪除整個棧

void

destroylinkedstack

(linkedstack* linkedstack)

;#endif

// linkedstack_h_included

seqstack.c 順序棧實現檔案(包含棧函式方法實現)
#include

"linkedstack.h"

void

initlinkedstack

(linkedstack* linkedstack)

//壓棧操作 返回成功與否

intpushlinkedstack

(linkedstack* linkedstack,elementtype element)

//出棧操作 返回成功與否 用乙個指標儲存出棧元素

intpoplinkedstack

(linkedstack* linkedstack,elementtype *element)

//儲存元素

*element = linkedstack->top->data;

//出棧 因為要free 所以先儲存一下棧頂元素的位址

stacknode* tempnode = linkedstack->top;

linkedstack->top = linkedstack->top->next;

free

(tempnode)

; linkedstack->length--

;return true;

}//清空棧

void

clearlinkedstack

(linkedstack* linkedstack)

}//刪除整個棧

void

destroylinkedstack

(linkedstack* linkedstack)

chapter4棧與佇列 1 順序棧實現

對於棧來講,理論上線性表的操作特性它都具備,可由於它的特殊性,所以針對它在操作上會有些變化。特別是插入和刪除操作,我們改名為push和pop,英文直譯的話是壓和彈,更容易理解。你就把它當成是彈夾的子彈壓入和彈出就好記憶了,我們一般叫進棧和出棧。棧的抽象資料型別adt 棧 stack data 同線性...

棧和佇列 2鏈棧

adrian 鏈棧元素入棧 例如,將元素 1 2 3 4 依次入棧,等價於將各元素採用頭插法依次新增到鍊錶中,每個資料元素的新增過程如圖 2 所示 鏈棧元素出棧 例如,圖 2e 所示的鏈棧中,若要將元素 3 出棧,根據 先進後出 的原則,要先將元素 4 出棧,也就是從鍊錶中摘除,然後元素 3 才能出...

鏈棧與鏈佇列

首先,我們先搞清楚,棧的原理就是現金後出,譬如往箱子裡面放球,最先放進去的最後拿出來。下面給一下我臭臭的 include include 定義結構體 struct node int main q p 列印建立的鍊錶 t head next while t null 鏈棧 先入後出,因此新入的數應該在...