棧鏈式結構簡單操作
關於棧的鏈式儲存結構,下面用的是單連結串列頭插法建立棧,因為頭插法的特點是在頭結點(frist)與NULL空結點(first ->next)之間插入各結點,儲存資料的入棧順序和出棧順序是相反的,和棧的
特點很相似,工作指標如top指標一樣,始終指向棧頂(第一個結點)。下程式碼如有不當之處,請指正!
特點很相似,工作指標如top指標一樣,始終指向棧頂(第一個結點)。下程式碼如有不當之處,請指正!
點選(此處)摺疊或開啟
-
#include<iostream>
-
//#include<stdlib.h>
-
using namespace std;
-
struct Stack {
-
-
int data;
-
struct Stack *next;
-
};
-
-
Stack *CreatStack() {
-
-
Stack *p;
-
p = new Stack; //p = (Stack *)malloc(sizeof(Stack));
-
p->data = NULL; //頭結點不存放資料域
-
p->next = NULL; //棧底
-
return p;
-
}
-
-
Stack *PushStack(Stack *p) {
-
-
Stack *q;
-
-
cout << "進棧順序:" << endl;
- //下面用頭插法構建鏈式棧,和單連結串列的頭插法沒有區別
-
for (int i = 0; i < 9; i++) {
-
-
q = new Stack;
-
q->data = i;
-
cout << q->data << "-->";
-
q->next = p->next;
-
p->next = q;
-
}
-
cout << "進棧結束" << endl;
-
return p;
-
}
-
-
void PrintStack(Stack *p) { //出棧
-
-
cout << "出棧順序:" << endl;
-
-
p = p->next;
-
-
for (p->next; p != NULL; p = p->next) {
-
-
cout << p->data << "-->";
-
}
-
cout << "出棧結束" << endl;
-
}
-
-
void InsertStack(Stack *first,int x) { //在棧頂插入結點
-
-
-
Stack *p;
-
p = new Stack;
-
p->data = x;
-
p->next = first->next;
-
first->next = p;
-
-
}
-
-
void DestoryStack(Stack *first) { //銷燬棧
-
-
do{
-
-
Stack *p;
-
p = first;
-
first = first->next;
-
delete p; //該步一定要在上面步驟之後
- p = NULL; //避免出現迷途指標
-
-
-
} while (first != NULL);
-
-
cout << "鏈棧已銷燬" << endl;
-
}
-
-
int main() {
-
-
Stack *p,*s;
-
p = CreatStack();
-
s = PushStack(p);
-
//InsertStack(s, 11);
-
DestoryStack(s);
-
//PrintStack(s);
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29876893/viewspace-1814930/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C語言資料結構:鏈式棧及其出入棧C語言資料結構
- JS棧結構的簡單封裝JS封裝
- 單鏈錶鏈式結構的建立
- 順序棧的簡單操作
- 利用泛型模擬棧結構實現內部鏈式儲存結構泛型
- 鏈式結構
- java實現棧的簡單操作Java
- 資料結構線性表的鏈式儲存結構(單連結串列)的表示及其基本操作資料結構
- 鏈式棧
- 順序棧、鏈棧基本操作
- C++連結串列類的簡單操作含圖書結構體 簡單易懂C++結構體
- 特殊資料結構:單調棧資料結構
- 避免打斷鏈式結構:使用.compose( )操作符
- 單連結串列簡單操作一
- 棧與佇列鏈式儲存結構一貨物上架問題佇列
- 棧結構
- 從簡單的線性資料結構開始:棧與佇列資料結構佇列
- 資料結構與演算法--簡單棧實現及其應用資料結構演算法
- javascript鏈式呼叫簡單介紹JavaScript
- JVM — 執行時棧幀結構簡介JVM
- JVM -- 執行時棧幀結構簡介JVM
- 棧2: 鏈式儲存
- 使用棧結構計算中綴表示式
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- 資料結構之連結串列與陣列(3):單向連結串列上的簡單操作資料結構陣列
- 資料結構(線性錶鏈式儲存)的幾個基本操作資料結構
- Android任務和返回棧簡單總結Android
- 單例項,分散式系統體系結構簡介單例分散式
- 簡單學懂鏈式程式設計程式設計
- JVM結構的簡單梳理JVM
- 資料結構簡單題資料結構
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- C語言資料結構:鏈式佇列的建立及其出入隊操作C語言資料結構佇列
- 佇列的鏈式儲存結構佇列
- 連結串列&鏈棧&佇列佇列
- 迴圈雙連結串列的簡單操作
- 資料結構之連結串列與陣列(2):單向連結串列上的簡單操作問題資料結構陣列