鏈式棧的定義與實現

2021-10-10 19:49:33 字數 1818 閱讀 7836

說明1:以下**在vs2017中編譯通過,讀者使用時可以直接將標頭檔案(linkstack.h),原始檔(linkstack.c),主檔案(main.c)中的內容直接拷貝過去,即可編譯執行!

說明2:圖示

標頭檔案:linkstack.h(函式的宣告)

#pragma once

#include

#include

#include

#include

#define elemtype int

typedef

struct lsnode

lsnode;

typedef lsnode* linkstack;

lsnode*

createnode

(elemtype data)

;void

initstack

(linkstack* s)

;void

push

(linkstack* s, elemtype data)

;int

gettop

(linkstack* s)

;void

pop(linkstack * s)

;bool stackempty

(linkstack * s)

;int

stacklength

(linkstack * s)

;void

destorystack

(linkstack * s)

;void

clearstack

(linkstack * s)

;void

show

(linkstack* s)

;

原始檔:linkstack.c(函式的定義)

#include

"linkstack.h"

void

initstack

(linkstack* s)

lsnode*

createnode

(elemtype data)

void

push

(linkstack* s, elemtype data)

void

pop(linkstack * s)

intgettop

(linkstack* s)

return

(*s)

->data;

}bool stackempty

(linkstack * s)

intstacklength

(linkstack * s)

return count;

}void

clearstack

(linkstack * s)

void

destorystack

(linkstack * s)

free

(p1);}

void

show

(linkstack * s)

printf

("\n");

}

主檔案:main.c(測試檔案)

#include

"linkstack.h"

intmain()

順序棧與鏈式棧型別的定義

順序棧 define stacksize 100 假定預分配的棧的空間為100個元素 typedef char datatype 假定棧元素的資料型別為字元 typedef struct datatype data stacksize 定義棧陣列 int top 定義棧頂 seqtack 鏈式棧 t...

棧的連續與鏈式實現

stl中已經有和了,寫在這裡是幫助理解這兩種資料結構。棧 只能在表的一段插入 push 或者刪除 pop 且滿足先進先出的順序。很形象的稱之為 棧 連續棧 陣列實現 include using namespace std const int stacksize 10000 template clas...

棧的定義,順序棧,鏈式棧

棧又名堆疊,是資料暫時儲存的地方。它一種只能在頂端進行插入和刪除操作的特殊線性表,它按照先進後出的原則儲存資料,先進的資料被壓入棧底,最後的資料在棧頂,需要讀取資料的時候從棧頂開始彈出資料。棧具有記憶作用,對棧的插入和刪除操作中,不需要改變棧底指標。棧中允許進行插入和刪除操作的一端稱為棧頂 top ...