数据结构第一章复习 基本概念+线性表

最近在忙复试的事情,真的感觉全世界都在帮我,每天满满的感动,稳住哦,一定可以的!!!

数据结构

数据元素:数据的基本单位
数据项:数据结构讨论的最小单位

算法的基本特征:
(1)有穷性:算法的步骤是有限的,不能是死循环
(2)确定性:相同的输入,一定能得到相同的输出
(3)可行性:任何步骤都可以被分解为基本的可执行操作步骤,并在有限次完成
(4)输入:零个或者多个输入
(5)输出:一个或者多个输出

数据结构包括 逻辑结构、存储结构、数据的运算

逻辑结构表示数据与数据之间的联系
存储结构表示数据在电脑中的存放方式
数据的运算表示数据要进行的操作

比如 :三年级一班 线性 链表 选班长
逻辑结构 存储结构 数据运算
整本书将围绕这些展开

在这里插入图片描述

逻辑结构>线性结构

线性结构:结点间一对一的关系
四个特征:
(1)唯一的第一个元素
(2)唯一的最后一个元素
(3)除了第一个元素以外,每个元素都有唯一的前驱元素
(4)除了最后一个元素外,每个元素都有唯一的后继元素

存储方式:
(1)顺序存储:数组(线性表)
(2)链式存储:链表

逻辑结构>线性结构>线性表

顺序表的插入算法:
在表的第i个位置插入元素
(1)首先判断这时候线性表的长度是否已经达到数组的最大值,如果是,则报错
(2)判断插入的位置是否合理
(3)从最后一个元素开始,到第i个位置,依次往后移动一个位置
(4)在第i个位置插入元素
(5)表的长度加一

顺序表的删除算法
在表的第i个位置删除元素
(1)首先判断表是否为空,如果是空,则报错
(2)判断删除的元素的位置是否正确
(3)取出删除元素
(4)从删除的元素开始遍历到最后一个元素的位置,依次往前移动一个位置
(5)表的长度加一

链表的查找
查找第i个位置的元素
(1)先声明一个结点p,指向首结点,并且声明一个变量j初始为1;
(2)当j<I时,p结点往后移动,然后j的值增1,直到j>=i;
(3)若到了链表的末尾,即p的下一个结点是空,则说明第i个元素不存在
(4)查找成功,返回p结点的数据

链表的插入
在表的第i个位置插入值为t的元素
(1)先声明一个结点p,指向首结点,并且声明一个变量j初始化为1
(2)当j<I时,p不断往后移动,并且j+1;
(3)如果到了链表末尾,即p的下一个结点值为空,则说明第i个位置不存在
(4)若查找成功,则创建一个空结点s,并将s的数据域置为t
(5)将结点插入链表:
s->next=p->next;
p->next=s;

链表的删除
删除第i个位置的元素
1.首先声明结点p和结点q,p指向首结点,定义一个变量j,初始化为1
2.当j<i时,遍历链表,p往后移动,一直到找到第i个元素的位置
3.如果到了链表末尾,即p的后一个结点值为空,则说明这个位置的元素不存在
4,若查找成功,则 q=p->next
5.p->next=q->next;free(q);

双链表的插入

在这里插入图片描述
如图所示,要在p结点之后插入s结点
在这里插入图片描述

所以是
(1)s->next=p->next;
(2)p->prior=p;
(3)p->next->prior=s;
(4)p->next=s;

将单链表逆置:
头插法:
新建结点p和q,p指向头结点的后一个结点,头结点的下一个指针域置为空,之后将p结点赋值给q结点,并且p结点往后移一个位置,接着将q结点插入到头结点的后面,再将p又赋值给q,q往后移动,直到q到最后

也就是从第一个元素开始,每个元素都插入到头结点的后面那个位置,这样就形成了逆置。

静下心来,弄懂这些知识,时间会给你答案,还有最后七天,加油!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红心柚大果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值