C Language 栈和队列 - 顺序栈(五)

通过线性表的顺序表和单链表结构后,栈和队列也属于线性表,只不过对于操作有所限制。

  • 创建顺序栈
struct SqStack {
	char data[MaxSize];
	int top;
};
  • 初始化顺序栈算法:
//初始化栈
void InitStack(struct SqStack *&s) {

	s = (SqStack *)malloc(sizeof(SqStack));
	s->top = -1;
}

在这里插入图片描述
补充:

  1. 栈满条件:s->top == MaxSize - 1
  2. 栈空条件:s->top == -1
  3. 元素e的进栈操作,先将top指针自增,再将新元素入队
  4. 元素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;
}
  • 结果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值