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...