数据结构与算法_第二讲:线性表

线性表

有n(n>=0)个相同类型的数据元素组成的有限序列,它是最基本、最常用的一种线性结构。顾名思义,线性表就像一条线,不会分叉。线性表有唯一的开始和结束,除了第一个元素外,每个元素都有唯一的直接的前驱,除了最后一个元素外,每个元素都有唯一的直接后继。

前驱和后继

 顺序表

顺序表是顺序存储方式,即逻辑上相邻的数据在计算机内的存储位置也是相邻的。顺序存储方式,元素存储是连续的,中间不允许有空,可以快速定位第几个元素,所以插入、删除时需要移动大量元素(缺点)。

链表

链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内存储位置不一定相邻,那么怎么表示逻辑上的相邻关系呢?

单链表

 

 单链表基本操作

下面以带头节点的单链表为例,讲解单链表的基本操作:

  • 初始化

Linklist L;

L = new Lnode;

L-> next = NULL;

if(!L)

    return 0;
  • 创建

头插法

S = new Lnode;

S-> data = 2;

尾插法

r-> next = s;

r = s;

注:

先修改没有标记的指针,再修改有标记的指针;如果两端均有标记,先后修改谁均可。

头插法是逆序建表,尾插法是正序建表。

  • 取值
  • 查找

 

注:

链表的头指针不可以随意修改!

p = L-> next;

p = p-> next;
  • 插入

 注:

单链表只可以向后操作,不可以向前操作;所以先找第i-1节点,先修改没有标记的指针。

  • 删除

 

p->next=q->next;

delete q;

注:

p指针指向需要先找到删除节点的前一个

 双向链表

双向链表有三个域:prior域、data域、next域 

  • 修改

p->prior->next = s;

s->prior = p->prior;

s->next = p;

p->prior = s;
  • 删除

p->next->prior = p->prior; 
delete p;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BelongToMe@Hui

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

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

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

打赏作者

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

抵扣说明:

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

余额充值