> 文档中心 > 【C语言实现顺序栈】我用C语言实现了顺序栈,快来看看吧

【C语言实现顺序栈】我用C语言实现了顺序栈,快来看看吧

目录

一、栈的基本概念

1.定义

2.几个重要术语

二、顺序栈的表示

三 、顺序栈的基本操作

1.栈的初始化操作

2.栈的判空操作

3.进栈操作

4.出栈操作

5.取栈顶元素


一、栈的基本概念

1.定义

栈是一种只允许在一端进行插入和删除的特殊线性表。

2.几个重要术语

①栈顶:表中允许进行插入、删除操作的一端叫做栈顶
②栈底:固定的,不允许进行插入和删除的另一端
③空栈:不任何元素
④栈的操作特性:先进后出(FILO)
⑤栈的数学性质:n个不同元素进栈,出栈元素不同排列的个数为1/(n+1)*C2n(n)--卡特兰数(Catalan) 

二、顺序栈的表示

typedef int ElemType;#define MaxSize 50     //定义栈中元素的最大个数typedef struct {ElemType  data[MaxSize];  //存放栈中的元素int top;    //栈顶指针}SqStack;

三 、顺序栈的基本操作

栈空条件:pastack.top == -1;
栈满条件:pastack.top == MaxSize-1;
栈的长度:pastack.top+1;

1.栈的初始化操作

void InitStack(SqStack* pastack){pastack->top = -1; //初始化栈顶指针}

2.栈的判空操作

bool EmptyStack(SqStack pastack){if (pastack.top = -1)  //栈空{return true;}elsereturn false;     //栈不空}

3.进栈操作

bool Push(SqStack* pastack, ElemType e){if (pastack->top == MaxSize - 1)   //栈满,报错{return false;}pastack->top++;      //栈顶指针加1pastack->data[pastack->top] = e;   //元素进栈return true;}

4.出栈操作

bool Pop(SqStack* pastack, ElemType* e){if (pastack->top == -1)     //栈空,报错{return false;}*e = pastack->data[pastack->top]; //将栈顶元素赋个epastack->top--;     //栈顶指针减一return true;}

5.取栈顶元素

bool GetTopElem(SqStack pastack, ElemType* e){if (pastack.top == -1)     //栈空,报错{return false;}*e = pastack.data[pastack.top];   //将栈顶元素赋给ereturn true;}

A soul without imagination is like an observatory without a telescope.