C語言 實現 順序棧

2021-06-05 21:44:44 字數 2704 閱讀 9342

seqstack.h 標頭檔案宣告如下:

#include typedef int datatype;             //自定義資料型別,假定為整型

typedef struct seqstack //順序棧定義

seqstack;

typedef struct seqstack * pseqstack; //順序棧的指標型別

//建立乙個容量為m的空棧

pseqstack createemptystack(int m);

//判斷棧是否為空棧

int isemptystack(pseqstack stack);

//判斷棧是否已滿

int isfullstack(pseqstack stack);

//進棧,成功返回1,失敗返回0

int push(pseqstack stack,datatype x);

//出棧,成功返回1,失敗返回0

int pop(pseqstack stack);

//取棧頂元素

datatype gettop(pseqstack stack);

//顯示棧內所有元素

void showstack(pseqstack stack);

//把棧置空

void setempty(pseqstack stack);

//把棧銷毀

void destroystack(pseqstack stack);

seqstack.cpp 定義**如下:

#include #include #include "seqstack.h"

//建立乙個容量為m的空棧

pseqstack createemptystack(int m)

//初始並分配棧元素儲存空間,陣列第乙個元素不使用

stack->data = (datatype *)malloc( (m+1) * sizeof(datatype));

if(stack->data == null)

stack->maxnum = m; //棧容量

stack->top = 0; //棧內還未儲存有元素

return stack;

}//判斷棧是否為空棧

int isemptystack(pseqstack stack)

//判斷棧是否已滿

int isfullstack(pseqstack stack)

//進棧,成功返回1,失敗返回0

int push(pseqstack stack,datatype x)

stack->top =stack->top + 1;

stack->data[stack->top]=x; //儲存棧元素陣列從下標1開始

return 1;

}//出棧,成功返回1,失敗返回0

int pop(pseqstack stack)

stack->top=stack->top-1;

return 1;

}//取棧頂元素

datatype gettop(pseqstack stack)

return (stack->data[stack->top]);

}//顯示棧內所有元素

void showstack(pseqstack stack)

printf("-->底\n");

}}//把棧置空

void setempty(pseqstack stack)

//把棧銷毀

void destroystack(pseqstack stack)

}

main.cpp main函式呼叫順序棧操作:

#define _crt_secure_no_deprecate    //解決在vs環境裡出現的警告問題

#include #include "seqstack.h"

int main( )

else

break;

case '4':

if( pop(stack))

else

break;

case '5':

data=gettop(stack);

printf("棧頂值為:%d\n",data);

break;

case '6':

printf("棧當前內容:");

showstack(stack);

break;

case '7':

setempty(stack);

printf("棧當前內容:");

showstack(stack);

break;

case '8':

destroystack(stack);

printf("成功將棧銷毀!\n");

break;

default:

break;

}printf("\n");

fflush(stdin); /*清空緩衝區,也可以使用rewind(stdin);*/

}while( input != 'q' );

return 0;

}

好!大功告成!!!

C語言實現順序棧

順序棧,就是用一組位址連續的儲存單元來存放棧元素,然後用乙個棧結構去維護乙個棧。在c中,可用動態開闢的陣列去表示,維護的棧結構需要有乙個棧底和乙個棧頂指標。因為開闢乙個陣列需要事先知道它的大小,所以棧結構裡就必須還有乙個整型變數來表示當前棧的儲存容量,再可定義乙個變數用來擴充棧的最大容量。實現如下 ...

C語言實現順序棧

棧和佇列是兩種重要的線性結構。從資料結構的角度看,棧和佇列也是線性表,其特殊性在於棧和佇列的操作位置都在特定的位置。引用自嚴蔚敏的資料結構與演算法教材 棧的結構體定義 typedef struct stack sqstack 和鍊錶類似 我們首先要初始化順序棧 sqstack initsqstack...

順序表棧C語言實現

seqstack.h created on 2019年8月1日 author administrator ifndef seqstack h define seqstack h 陣列去模擬棧的順序儲存,有陣列的後面模擬棧頂 避免資料頻繁移動 define max size 1024 define s...