@資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》
@資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》
順序儲存結構可以實現一片連續的儲存空間,相對於鏈式則會出現記憶體大小較難調節。
#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 10//儲存空間初始分配量
#define STACKINCREMENT 10//儲存空間分配增量
typedef struct{
int *base;//順序棧的棧頂指標
int *top;//棧底指標
int stacksize;//定義棧的儲存空間大小
}ShunxuStack;
void InitStack(ShunxuStack &S){//建立棧
S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!S.base){
printf("記憶體分配失敗\n");
}
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
printf("記憶體分配成功\n");
}
void StackEmpty(ShunxuStack S){//判斷棧是否為空
if(S.top==S.base){
printf("\n棧為空\n");
}
printf("\n棧不為空\n");
}
void Push(ShunxuStack &S,int e){//將元素壓入棧
if(S.top-S.base>=S.stacksize){
S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
//使用realloc實現追加增加記憶體
S.top=S.base+S.stacksize;//
S.stacksize+=STACKINCREMENT;//棧的長度完成增加
}
*S.top++ =e;
printf("\n壓入棧的元素為:%d\n",e);
}
void Pop(ShunxuStack &S){//棧頂元素出棧(刪除)
if(S.top==S.base){
printf("\n棧為空\n");
}
int e=*--S.top;
printf("\n刪除的棧的元素為:%d\n",e);
}
void Show(ShunxuStack S){//顯示棧中元素
while(S.top-S.base!=0){
printf(" %d",*S.base);
*S.base++;
}printf(" (棧頂元素為最右邊的元素)");
}
int main(){
ShunxuStack S;
InitStack(S);
Push(S,1);
Push(S,2);
Push(S,3);
StackEmpty(S);
Show(S);
Pop(S);
Show(S);
}
相關文章
- 【資料結構】順序棧的實現(c++)資料結構C++
- 資料結構:棧的基本概念、順序棧、共享棧以及鏈棧資料結構
- C語言資料結構:順序棧的建立、出入棧,以及使用順序棧實現十進位制轉十六進位制C語言資料結構
- 資料結構 順序棧(c語言)資料結構C語言
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- 資料結構(筆試題-棧(入棧出棧)資料結構筆試
- js實現資料結構--棧JS資料結構
- Java版-資料結構-棧Java資料結構
- 棧1: 順序儲存
- Java棧資料結構的實現方式Java資料結構
- 資料結構-棧資料結構
- 資料結構 - 棧資料結構
- 資料結構之php實現棧資料結構PHP
- 波波的資料結構-棧資料結構
- 資料結構-js實現棧和佇列資料結構JS佇列
- 順序棧、鏈棧基本操作
- 【資料結構】實現順序表(c++)資料結構C++
- 資料結構學習(C++)——棧和佇列(定義和實現) (轉)資料結構C++佇列
- 順序棧————遍歷、出棧、入棧
- 【資料結構】棧的應用--括號的匹配(c++)資料結構C++
- C語言資料結構:鏈式棧及其出入棧C語言資料結構
- 【資料結構】順序佇列的實現(c++)資料結構佇列C++
- 資料結構之「棧」資料結構
- 資料結構之——棧資料結構
- javascript資料結構 -- 棧JavaScript資料結構
- 資料結構之棧資料結構
- 資料結構(1):棧資料結構
- 資料結構—棧和佇列資料結構佇列
- 資料結構(棧和佇列)資料結構佇列
- 【資料結構】--棧和佇列資料結構佇列
- 利用泛型模擬棧結構實現內部鏈式儲存結構泛型
- 資料結構和演算法-切片實現棧資料結構演算法
- JS 裡的資料結構 - 棧JS資料結構
- 【資料結構】棧的應用--數制轉換(c++)資料結構C++
- 【資料結構】棧的應用--行編輯程式(c++)資料結構C++
- 順序棧的實現方式
- 棧結構