线性表易错点与线性表程序设计易错点
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站。博主很喜欢的一句话
花开堪折直须折,莫待无花空折枝
:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事,做自己以后不会留有遗憾的事,做自己觉得有意义的事,不浪费这大好的青春年华。博主写博客目的是记录所学到的知识并方便自己复习,在记录知识的同时获得部分浏览量,得到更多人的认可,满足小小的成就感,同时在写博客的途中结交更多志同道合的朋友,让自己在技术的路上并不孤单。
目录:
1.线性表易错知识点
单链表的存储密度
关于头指针和头结点和首元结点
关于为何使用头结点及相关题目
2.线性表程序设计易错题
线性表的原地逆转
删除顺序表中值为item的元素
确定链表倒数第k个结点
1.1单链表的存储密度
单链表的存储密度小于1
存储密度:数据元素本身所占的存储量和整个结点结构所占的存储量之比。
由于链表的结点不及要设置数据元素外,还要额外设置指针域,设单链表数据元素本身所占存储量为D,指针域所占得到存储量为N,则存储密度为D/(D+N),所以一定小于1
1.2关于头指针和头结点和首元结点
1.头结点:
头结点指针域存放首元结点,数据域一般可以不存储任何信息
2.头指针:头指针指向链表中第一个结点的指针,若链表有头结点,则头指针指向头结点,若链表无头结点那么头指针指向线性表首元结点
3.首元结点:第一个存放数据元素的结点
1.3关于为何使用头结点及相关题目
为了使对首元结点的操作与其他结点的操作一致
看一道例题:
在单循环链表中,将头指针改设为尾指针(rear)后,其首元结点和尾结点存储位置分别是()
答案:
首元结点:
rear->next->next
尾结点:rear
需要特别注意的是:在单循环链表中有一个头结点
2.线性表程序设计考研大题
2.1线性表的原地逆转
设计一个算法,使得链表中的结点按照链接方向原地旋转,并要求算法的空间复杂度为O(1)
void Inverse(LinkList &L)
{p=L->next;L->next=NULL;while(p!NULL){q=p->next;p->next=L->next;L->next=p;p=q;}
}
2.2删除顺序表中值为item的元素
题目描述:已知长度为n的线性表A采用顺序存储结构,写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素
void DeleteItem(SqList &A,ElemType item)
{k=0;for(int i=0;i<A.length;i++){if(A.Elem[i]!=item){A.Elem[k]=A.Elem[i]; K++;}A.Length=k;}
}
2.3 确定链表倒数第k个结点
我们如何高效的确定倒数第k个结点的位置
p=L>next;//p等于首元结点
q=L->next;
int i=0;
while(p!=NULL)
{if(i<k)i++;elseq=q->next;p=p->next;
}
最终q指向的是倒数第k个结点
线性表易错点与线性表程序设计易错点相关推荐
- 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)
C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...
- 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表
线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...
- 实验一 线性表的物理实现(顺序表+单向链表)
基于顺序表实现的线性表 基于链表实现的线性表 实验中遇到的问题(&DevC++中的骚操作) 一.基于顺序表实现的线性表 List.h #include <iostream> usi ...
- java 线性表定义_Java数据结构的线性表是怎样的
Java数据结构--线性表的顺序存储实现 一.描述 线性结构特点: (1)存在唯一的一个被称作"第一个"的数据元素 (2)存在唯一的一个被称作"最后一个"的数据 ...
- (王道408考研数据结构)第二章线性表-第三节5:顺序表和链表的比较
文章目录 一:逻辑结构比较 二:存储结构比较 三:基本操作比较 (1)初始化操作 (2)销毁操作 (3)插入和删除 (4)查找 顺序表和链表的选取原则 一:逻辑结构比较 顺序表和链表都是线性表,都是线 ...
- 用标准C语言初始化线性表,C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作...
1.数据结构-顺序线性表的实现-C语言 #define MAXSIZE 100 //结构体定义 typedef struct { int *elem; //基地址 int length; //结构体当 ...
- java实现线性表的案例_数据结构—线性表(LinearList)的原理以及Java实现案例
线性表:零个或多个数据元素的有限序列.包括数组.链表.栈空间.队列等结构都属于线性表. 本文将介绍Java线性表中的数组.链表的实现逻辑,并附有数组线性表.单链表.静态链表的Java实现源码. 数据结 ...
- C语言丨线性表(二):线性链表(单链表)
线性表是由数据类型相同的个数据元素组成的有限序列,通常记为: 其中n为表长,n=0时称为空表:下标i表示数据元素的位序. 线性表的特点是组成它的数据元素之间是一种线性关系,即数据元素"一个接 ...
- C语言丨线性表(一):顺序表
线性表是由数据类型相同的个数据元素组成的有限序列,通常记为: 其中n为表长,n=0时称为空表:下标i表示数据元素的位序. 线性表的特点是组成它的数据元素之间是一种线性关系,即数据元素"一个接 ...
最新文章
- html5语义化标签大全
- [专栏目录]-环境搭建安装问题笔记目录
- 共享内存+Shellcode实现跨进程调用3环函数
- iphone换机数据迁移_iPhone迁移数据到Android(相册与短信)
- c语言中time 0 返回值,clock()返回值为什么是0
- 申请购买计算机的报告,关于申请购买电脑的请示(最新整理)
- Kafka Consumer端的一些解惑
- HashMap 的 7 种遍历方式+性能分析!
- UI设计APP素材可编辑模板|底部标签式导航
- Mac IDEA 实用快捷键大全(持续更新)
- java中412是什么错_412错误是什么 412错误怎么解决
- 高端化自欺欺人,国产手机又一块遮羞布被扯下,事实是被苹果碾压
- 郑捷《机器学习算法原理与编程实践》学习笔记(第三章 决策树的发展)(一 )_ID3...
- 关键点检测评价指标OKS
- c语言函数rewind作用,c语言中的rewind()是什么意思
- css 全角设置,CSS Flex框布局:全角行和列
- 疑因内部宫斗被离职,中兴70后程序员从公司坠楼 ​​​​
- ANSYS workbench 根据坐标施加载荷- external data载荷映射
- VS2017错误:未将对象引用设置到对象的实例
- 解决 Windows资源保护找到了损坏文件但无法修复问题