用数组实现栈,它将是顺序存储结构,通常由一个一维数组和一个记录栈顶元素位置的变量组成。
具体实现方法,可先定义一个结构,结构内有一个一维数组和一个记录栈顶元素位置的变量。
栈结构定义:
1 2 3 4 5 6 |
#define MaxSize 9999 typedef struct SNode* Stack; struct SNode{ ElementType Data[MaxSize]; //一维数组 int Top; //栈顶元素位置的变量 }; |
栈操作实现:
- 判断栈满
1 2 3 4 5 6 7 8 9 |
int IsFull(Stack S) { if(PtrS->Top == MaxSize-1){ printf("堆栈满"); return 1; }else{ reurn 0; } } |
- 判断栈空
1 2 3 4 5 6 7 8 |
int IsEmpty(Stack S) { if(Ptrs->Top == -1){ return 1; }else{ return 0; } } |
- 入栈
1 2 3 4 5 6 7 8 9 10 |
void Push(Stack PtrS, ElementType item) { if(PtrS->Top == MaxSize-1){ printf("堆栈满"); return; }else{ PtrS->Data[++(Ptrs->Top)] = item; return; } } |
- 出栈
12345678910ElementType Pop(Stack Ptrs){if(Ptrs->Top == -1){printf("堆栈空");return ERROR;//ERROR是特殊的ElementType值}else{return (Ptrs->Data[(Ptrs->Top)--]);}}
《用数组实现栈数据结构》上有1条评论
评论已关闭。