写在前面:博主是一位普普通通的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个结点

线性表易错点与线性表程序设计易错点相关推荐

  1. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  2. 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表

    ​ 线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...

  3. 实验一 线性表的物理实现(顺序表+单向链表)

    基于顺序表实现的线性表 基于链表实现的线性表 实验中遇到的问题(&DevC++中的骚操作) 一.基于顺序表实现的线性表 List.h #include <iostream> usi ...

  4. java 线性表定义_Java数据结构的线性表是怎样的

    Java数据结构--线性表的顺序存储实现 一.描述 线性结构特点: (1)存在唯一的一个被称作"第一个"的数据元素 (2)存在唯一的一个被称作"最后一个"的数据 ...

  5. (王道408考研数据结构)第二章线性表-第三节5:顺序表和链表的比较

    文章目录 一:逻辑结构比较 二:存储结构比较 三:基本操作比较 (1)初始化操作 (2)销毁操作 (3)插入和删除 (4)查找 顺序表和链表的选取原则 一:逻辑结构比较 顺序表和链表都是线性表,都是线 ...

  6. 用标准C语言初始化线性表,C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作...

    1.数据结构-顺序线性表的实现-C语言 #define MAXSIZE 100 //结构体定义 typedef struct { int *elem; //基地址 int length; //结构体当 ...

  7. java实现线性表的案例_数据结构—线性表(LinearList)的原理以及Java实现案例

    线性表:零个或多个数据元素的有限序列.包括数组.链表.栈空间.队列等结构都属于线性表. 本文将介绍Java线性表中的数组.链表的实现逻辑,并附有数组线性表.单链表.静态链表的Java实现源码. 数据结 ...

  8. C语言丨线性表(二):线性链表(单链表)

    线性表是由数据类型相同的个数据元素组成的有限序列,通常记为: 其中n为表长,n=0时称为空表:下标i表示数据元素的位序. 线性表的特点是组成它的数据元素之间是一种线性关系,即数据元素"一个接 ...

  9. C语言丨线性表(一):顺序表

    线性表是由数据类型相同的个数据元素组成的有限序列,通常记为: 其中n为表长,n=0时称为空表:下标i表示数据元素的位序. 线性表的特点是组成它的数据元素之间是一种线性关系,即数据元素"一个接 ...

最新文章

  1. html5语义化标签大全
  2. [专栏目录]-环境搭建安装问题笔记目录
  3. 共享内存+Shellcode实现跨进程调用3环函数
  4. iphone换机数据迁移_iPhone迁移数据到Android(相册与短信)
  5. c语言中time 0 返回值,clock()返回值为什么是0
  6. 申请购买计算机的报告,关于申请购买电脑的请示(最新整理)
  7. Kafka Consumer端的一些解惑
  8. HashMap 的 7 种遍历方式+性能分析!
  9. UI设计APP素材可编辑模板|底部标签式导航
  10. Mac IDEA 实用快捷键大全(持续更新)
  11. java中412是什么错_412错误是什么 412错误怎么解决
  12. 高端化自欺欺人,国产手机又一块遮羞布被扯下,事实是被苹果碾压
  13. 郑捷《机器学习算法原理与编程实践》学习笔记(第三章 决策树的发展)(一 )_ID3...
  14. 关键点检测评价指标OKS
  15. c语言函数rewind作用,c语言中的rewind()是什么意思
  16. css 全角设置,CSS Flex框布局:全角行和列
  17. 疑因内部宫斗被离职,中兴70后程序员从公司坠楼 ​​​​
  18. ANSYS workbench 根据坐标施加载荷- external data载荷映射
  19. VS2017错误:未将对象引用设置到对象的实例
  20. 解决 Windows资源保护找到了损坏文件但无法修复问题

热门文章

  1. Spring boot集成mongodb
  2. Java期末复习——ch02基本类型(进制转换,数据类型转换,汉字编码)
  3. java获得当前文件路径
  4. 前台后台进程转换问题
  5. 击败李世石后,人工智能转战医疗:用大数据诊断眼科疾病
  6. 《Netty 实战》Netty In Action中文版 第2章——你的第一款Netty应用程序(一)
  7. 2017蓝桥杯:承压计算
  8. webstorm和intellij idea下如何自动编译sass和scss文件
  9. 图形化代码阅读工具——Scitools Understand
  10. PHP中header用法详解带范例(转)