目錄
一、棧的簡介
二、順序棧
三、鏈式棧
棧:是一種限定僅在表尾進行插入/刪除操作的線性表。表尾稱為棧頂,表頭稱為棧底。不包含元素的空表稱為空棧。
如圖所示為棧的示意圖:
棧的分類:
1、順序棧:順序棧和順序表資料成員相同,不同在於:順序棧只能在棧頂進行插入/刪除操作。
2、鏈式棧:鏈式棧和鍊錶資料成員相同,不同在於:鏈式棧的棧頂在鏈頭位置(因為棧只能在棧頂進行插入/刪除操作,如果把棧頂設在鍊錶尾段,進行插入/刪除就需要遍歷鍊錶,時間複雜度會較大)。
特性:後進先出(lifo)
1、定義
2、入棧typedef int datatype;
typedef struct seqstack
seqstack;
3、出棧void seqstackpush(seqstack* pss, datatype d)
//2、壓棧
pss->_a[pss->_top] = d;
pss->_top++;
}
4、其他介面void seqstackpop(seqstack* pss)
1、定義//初始化
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");
}
2、入棧typedef int datatype;
//結點定義
typedef struct node
node;
//鏈式棧定義
typedef struct linkstack
linkstack;
3、出棧static node* buynode(datatype d)
void linkstackpush(linkstack* pls, datatype d)
4、其他介面void linkstackpop(linkstack* pls)
//2、出棧
del = pls->_top;
pls->_top = del->_next;
free(del);
del = null;
}
//初始化
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...