数据结构基础

本文介绍了数据结构中的基本概念,包括顺序表和链式表的优缺点,以及栈和队列的定义与特性。顺序表适合快速访问,但增删操作复杂,链式表则在增删改查上更灵活。栈是一种先进后出的数据结构,而队列则是先进先出。循环队列解决了顺序表中可能出现的假溢出问题。
摘要由CSDN通过智能技术生成

数据结构——顺序表

一.顺序表

1.1线性表:开辟出来一段连续的空间地址,一个数据单元只有一个数据前驱和数据后继 典性的就是数组
	#include<iostream>
	using namespace std ;
	int main ()
	{
		struct{
			int a[MAx]//MAx表示线性表的大小
			int length;//线性表的长度(表示现在存入了集合)
				}
     }
  • 1.优点:可以用下标快速访问
  • 2.缺点:增删改查比较复杂,一般用于快速访问的时候
1.2链式表:用指针指向储存的空间地址,空间地址不是连续的。
	#include<iostream>
	using namespace std ;
	struct list{
		int i;//用来存储数据
		list *p;//指向下一个数据的地址
	};
	
	int main ()
	{
	}
  • 1.优点:增删改查比线性表方便;
  • 2.缺点:不可随机访问,必须从开头开始遍历,查找,所以查找的时间复杂度比较大

二.栈

2.1定义
  • 限定只能在一端进行数据的增删数据结构;进行操作的一段称为“栈顶
2.2特点
  • 数据遵循先进后出,后进先出特点
#incldue<iostream>
using namespace std ;
struct list {
		int a[MAX];//用数组来实现栈的定义  当然也可以用链表
		int top;//用来指向栈顶
};
int main(){
}

三.队列

3.1定义
  • 限定数据进只能在队尾进行 出只能在队头进行的数据结构
  • 进的一头称为队尾 出的一头称为队头
    Alt
3.2特点

-数据遵循先进先出 后进后出

#define MAXSIZE 100
typedef struct {
    ElemType data[MAXSIZE];//用数组实现的
    int front,rear;//front 指向队头 rear 指向队尾
} SqQueue;

3.3 循环队列

队列
,front= =rear = = 0 可以作为队列的判空条件,但能否能用 rear = = MAXSIZE 作为队列已满的条件呢?显然是不行的,因为队尾指针可能已经到了最尾端,但是队头指针可能不在初始位置,而是在队列的中间,这时入队出现“上溢”,但这种溢出并不是真正的溢出,data数组中仍存在可以放置元素的位置,所以为“假溢出”。

因为在顺序表储存的队列中会出现假溢出的问题,所以我们在逻辑上 让队列的头和尾相连 形成一个环—我们称这个队列为循环队列
循环队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值