C Language 栈和队列 - 顺序栈
Posted Adorable_Rocy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C Language 栈和队列 - 顺序栈相关的知识,希望对你有一定的参考价值。
通过线性表的顺序表和单链表结构后,栈和队列也属于线性表,只不过对于操作有所限制。
- 创建顺序栈
struct SqStack {
char data[MaxSize];
int top;
};
- 初始化顺序栈算法:
//初始化栈
void InitStack(struct SqStack *&s) {
s = (SqStack *)malloc(sizeof(SqStack));
s->top = -1;
}
补充:
- 栈满条件:s->top == MaxSize - 1
- 栈空条件:s->top == -1
- 元素e的进栈操作,先将top指针自增,再将新元素入队
- 元素e的出队操作,先将top指针指向的元素e取出,再将top指针自减1.
- 插入元素算法:
//插入元素
void InsertElem(struct SqStack *&s , int index , char ch) {
if(s->top == MaxSize - 1) {
printf("溢出了");
}
if(index != -1) {
s->top++;
s->data[s->top] = ch;
} else {
char alphaments[5] = {'a','b','c','d','e'};
while(s->top <= 5) {
s->top++;
s->data[s->top] = alphaments[s->top];
}
}
}
补充:这里插入元素分为默认插入和指定插入元素,index传入-1表示默认插入初始化元素,index传入0或者其他字符,即插入自己想插入的元素
- 出栈算法:
void Pop(struct SqStack *&s , char &e) {
e = s->data[s->top--];
}
- 主函数:
main() {
struct SqStack *S;
//初始化栈
InitStack(S);
//判断是否为空
EmptyOfStack(S);
//插入元素 默认插入元素
InsertElem(S,-1,'\\0');
//判断是否为空
bool isEmpty = EmptyOfStack(S);
//输出元素
printf("%d\\n",isEmpty);
//输出栈元素
PrintfStack(S);
return 0;
}
- 结果如下:
以上是关于C Language 栈和队列 - 顺序栈的主要内容,如果未能解决你的问题,请参考以下文章