ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构——栈的顺序存储结构

2022-03-20 19:02:03  阅读:151  来源: 互联网

标签:SeqStack return top 栈顶 指针 出栈 数据结构 顺序存储 结构


一.栈的概念

栈是一种操作受限的,只允许一端进行插入和删除的线性表,允许进行操作的一端叫做栈顶(top),另一端为栈底(bottom),插入操作为入栈或进栈,删除操作称为出栈或退栈。

二.栈的顺序存储结构

顺序栈类型

#define MAXSIZE//栈最大元素
typedef struct{
	datatype data[MAXSIZE];
	int top;//表示栈顶位置 
}SeqStack

指向顺序栈的指针

SeqStack *s; 

顺序栈基本操作:

(1)置空栈:建立栈空间,初始化栈顶指针

SeqStack *Init_SeqStack(){
	SeqStack *s;
	s = malloc(sizeof(SeqStack));
	s->top = -1;
	return s;
}

通常0下标端设为栈底,空栈时栈顶指针 top = -1,入栈时,栈顶指针 top++,出栈时,栈顶指针top--

(2)判空栈

int Empty_SeqStack(SeqStack *s){
	if(s->top == -1){
		return 1;
	}
	else{
		return 0;
	}
}

(3)入栈

int Push_SeqStack(SeqStack *s, datatype x){
	if(s->top == MAXSIZE-1){//栈满不能入栈 
		return 0;
	}
	else{
		s->top++;
		s->data[s->top] = x;
		return 1;
	} 
}

入栈时,要先判断栈是否满了,栈满条件为:s->top == MAXSIZE-1,栈满时再入栈会空间溢出,发生错误,称为上溢。

(4)出栈

int Pop_SeqStack(SeqStack *s, datatype *x){
	if(Empty_SeqStack(s)){//栈空不能出栈 
		return 0;
	}
	else{
		*x = s->data[s->top];
		s->top--;
		return 1;
	}
}

(5)取栈顶元素

int Top_SeqStack(SeqStack *s){
	if(Empty_SeqStack(s)){//栈空不能读栈 
		return 0;
	}
	else{
		return (s->data[s->top]);
	}
}

出栈和读栈顶元素操作,首先要判断栈是否为空,空栈不可操作,否则会发生错误;

出栈栈顶指针会下移一位 top--,读栈顶元素只需要读取栈顶元素的值,栈顶指针不用变。 

标签:SeqStack,return,top,栈顶,指针,出栈,数据结构,顺序存储,结构
来源: https://blog.csdn.net/qq_62755767/article/details/123617908

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有