順序棧的簡單操作
關於順序棧的簡單操作如下, 由於主要介紹思想實現,讀者從程式碼中可以很容易看出很多漏洞。如有錯誤之處,請大家指正!
點選(此處)摺疊或開啟
-
#include<iostream>
-
using namespace std;
-
#define MAXSIZE 10
-
-
struct Stack {
-
-
int data[MAXSIZE];
-
int top;
-
};
-
-
Stack *CreateStack(); //該步驟函式宣告必須放在結構體後面
-
void InitialStack(Stack *);
-
void InsertStack(Stack *, int, int);
-
void DeleteStack(Stack *, int);
-
void PrintStack(Stack *);
-
-
Stack *CreateStack() {
-
-
Stack *p = new Stack; //建立指向棧的指標p
-
p->top = -1; //因為是順序棧,儲存資料放在陣列中,為了一致性,top指標置於-1,表明棧為空
-
return p;
-
-
}
-
-
void InitialStack(Stack *p) {
-
-
Stack *head;
-
head = p;
-
-
cout << "入棧的順序是:" << endl;
-
-
int MAX_SIZE = MAXSIZE - 1;
-
-
while (head->top != MAX_SIZE - 1) {
-
-
head->top++; //該步可以省略,下步改為:head->data[++head->top] = head->top;就是賦值與自加的先後順序
-
head->data[head->top] = head->top;
-
cout << head->data[head->top] << "-->";
-
}
-
-
cout << "輸出結束";
-
cout << endl;
-
-
}
-
-
void InsertStack(Stack *p, int i, int x) {
-
-
Stack *q;
-
-
int length = p->top; //這裡一定要注意,棧只能從一端進入彈出,要保證top指標不能夠被修改
-
p->top += 1; //由於插入一個資料,棧長度+1(更準確的說是陣列下標+1)
-
q = p;
-
-
int llength = q->top;
-
int flag = llength;
-
-
for (int n = 0; n <= flag - i; n++) { //一定要保證變與不變,演算法實現,透過圖解讀者可以清楚知道各引數意義
-
-
q->data[llength--] = q->data[length--];
-
}
-
-
q->data[i -1] = x;
-
-
-
}
-
-
void DeleteStack(Stack *p, int i) {
-
-
Stack *q;
-
-
int length = p->top;
-
q = p;
-
-
int l = i;
-
int j = i - 1;
-
-
for (int n = 0; n <= length - l+1; n++) {
-
-
q->data[j++] = q->data[i++]; //刪除操作,對於陣列很簡單就是覆蓋操作
-
}
-
-
p->top = p->top - 1;
-
-
-
}
-
void PrintStack(Stack *p) {
-
-
Stack *q;
-
q = p;
-
-
cout << "出棧的順序是:" << endl;
-
-
while (q->top >=0) {
-
-
cout << q->data[q->top--] << "-->";
-
-
}
-
-
cout << "出棧結束" << endl;
-
}
-
-
int main() {
-
-
Stack *p;
-
-
p = CreateStack();
-
InitialStack(p);
-
-
// InsertStack(p, 5, 11);
-
//PrintStack(p);
-
-
DeleteStack(p, 5);
-
PrintStack(p);
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29876893/viewspace-1814693/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP實現簡單順序棧PHP
- 順序棧、鏈棧基本操作
- 棧,佇列,優先順序佇列簡單介面使用佇列
- 順序棧————遍歷、出棧、入棧
- 順序棧的實現方式
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- c語言順序棧常規插入刪除操作C語言
- 棧1: 順序儲存
- java實現棧的簡單操作Java
- javascript執行順序簡單介紹JavaScript
- jQuery ajax的執行順序簡單介紹jQuery
- 順序棧與鏈式棧的圖解與實現圖解
- 資料結構:棧的基本概念、順序棧、共享棧以及鏈棧資料結構
- 棧鏈式結構簡單操作
- 順序審批流的簡單程式碼實現
- css選擇器的解析順序簡單介紹CSS
- 路考指南—駕駛操作順序
- 順序佇列基本操作佇列
- js程式碼執行順序簡單介紹JS
- javascript表示式中的運算順序簡單介紹JavaScript
- 最簡單的C程式設計--順序程式設計C程式程式設計
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- C語言資料結構:順序棧的建立、出入棧,以及使用順序棧實現十進位制轉十六進位制C語言資料結構
- C/C++多引數函式引數的計算順序與壓棧順序C++函式
- margin和border簡寫的順序
- C++ 順序容器的刪除操作C++
- 區域性變數申請棧空間時的入棧順序變數
- 資料結構 順序棧(c語言)資料結構C語言
- 【資料結構】順序棧的實現(c++)資料結構C++
- 利用順序棧完成的作業題(C語言)C語言
- Activiti學習筆記二:簡單順序流演示demo筆記
- 關於JAVA中順序IO的基本操作Java
- C++操作符的優先順序C++
- [RDMA] RDMA的不同操作是否保證順序?
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- C++ 順序容器大小操作 resizeC++
- 棧是按照順序且連續儲存值