棧的基本實現

2021-09-22 19:29:19 字數 2345 閱讀 9204

目錄

一、棧的簡介

二、順序棧

三、鏈式棧

:是一種限定在表尾進行插入/刪除操作的線性表。表尾稱為棧頂,表頭稱為棧底。不包含元素的空表稱為空棧。

如圖所示為棧的示意圖

棧的分類

1、順序棧:順序棧和順序表資料成員相同,不同在於:順序棧只能在棧頂進行插入/刪除操作。

2、鏈式棧:鏈式棧和鍊錶資料成員相同,不同在於:鏈式棧的棧頂在鏈頭位置(因為棧只能在棧頂進行插入/刪除操作,如果把棧頂設在鍊錶尾段,進行插入/刪除就需要遍歷鍊錶,時間複雜度會較大)。

特性:後進先出(lifo)

1、定義

typedef int datatype;

typedef struct seqstack

seqstack;

2、入棧

void seqstackpush(seqstack* pss, datatype d)

//2、壓棧

pss->_a[pss->_top] = d;

pss->_top++;

}

3、出棧

void seqstackpop(seqstack* pss)

4、其他介面

//初始化

void seqstackinit(seqstack* pss)

//銷毀

void seqstackdestory(seqstack* pss)

}//棧頂元素

datatype seqstacktop(seqstack* pss)

//判空

int seqstackempty(seqstack* pss)

//大小

int seqstacksize(seqstack* pss)

//列印

void print(seqstack* pss)

printf("\n");

}

1、定義

typedef int datatype;

//結點定義

typedef struct node

node;

//鏈式棧定義

typedef struct linkstack

linkstack;

2、入棧

static node* buynode(datatype d)    

void linkstackpush(linkstack* pls, datatype d)

3、出棧

void linkstackpop(linkstack* pls)

//2、出棧

del = pls->_top;

pls->_top = del->_next;

free(del);

del = null;

}

4、其他介面

//初始化

void linkstackinit(linkstack* pls)

//銷毀

void linkstackdestory(linkstack* pls)

}//獲取棧頂元素

datatype linkstacktop(linkstack* pls)

//判空

int linkstackempty(linkstack* pls)

//大小

int linkstacksize(linkstack* pls)

順序棧的基本實現

順序棧採用的是用陣列儲存的方式 順序棧的特點 只允許在棧頂插入和刪除元素,且 先入後出 includeusing namespace std const int stacksize 10 templateclass seqstack seqstack 析構函式 void push datatype ...

順序棧的基本實現

學了順序棧 用 記錄一下 下面展示一些內聯 片。include.h define maxsize 5 define error0 define ok1 using namespace std typedef int status typedef int selemtype 棧的基本資料結構型別 ty...

實現順序棧基本運算 棧

c語言實現順序棧的入棧 出棧 棧元素讀取操作 1 include 2 include 3 define maxsize 20 4 define maxnum 10 5 define elemtype int 6 typedef struct sqstack 7 sqstack 儲存結構型別名 111...