数据结构课上笔记5

介绍了链表和基本操作

用一组物理位置任意的存储单元来存放线性表的数据元素。 这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。因此,链表中元素的逻辑次序和 物理次序不一定相同。

 

定义:

typedef  struct  Lnode{  //声明结点的类型和指向结点的指针类型  ElemType         data;    //数据元素的类型 struct   Lnode  *next;   //指示结点地址的指针  
}Lnode, *LinkList;  
struct Student
{ char num[8];   //数据域char name[8];  //数据域int score;          //数据域struct Student *next;  // next 既是 struct Student // 类型中的一个成员,又指 // 向 struct Student 类型的数据。 
}Stu_1, Stu_2, Stu_3, *LL;  

头结点:在单链表的第一个结点之前人为地附设的一个结点。

带头结点操作会方便很多。

带和不带的我都写过了

下面列出我见过的一些好题

1、

线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。

  • 正确
  • 错误

 

错,线性表是逻辑结构概念,可以顺序存储或链式储,与元素数据类型无关。链表就是线性表的一种  前后矛盾

 

2、

若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(    )存储方式最节省运算时间。

  • 单链表
  • 仅有头指针的单循环链表
  • 双链表
  • 仅有尾指针的单循环链表

    对于A,B,C要想在尾端插入结点,需要遍历整个链表。

    对于D,要插入结点,只要改变一下指针即可,要删除头结点,只要删除指针.next的元素即可。

 

3、注意:线性表是具有n个数据元素的有限序列,而不是数据项

 

4、

以下关于单向链表说法正确的是

  • 如果两个单向链表相交,那他们的尾结点一定相同
  • 快慢指针是判断一个单向链表有没有环的一种方法
  • 有环的单向链表跟无环的单向链表不可能相交
  • 如果两个单向链表相交,那这两个链表都一定不存在环

自己多画画想想就明白了,关于快慢指针我以后会写总结。

 

5、

链接线性表是顺序存取的线性表 。 ( )

  • 正确
  • 错误

链接线性表可以理解为链表
线性表分为顺序表和链表
顺序表是顺序存储结构、随机存取结构
链表是随机存储结构、顺序存取结构

 

6、

typedef struct node_s{int item;struct node_s* next;
}node_t;
node_t* reverse_list(node_t* head)
{node_t* n=head;head=NULL;while(n){_________               }return head;}

空白处填入以下哪项能实现该函数的功能?

  • node_t* m=head; head=n; head->next=m; n=n->next;
  • node_t* m=n; n=n->next; m->next=head; head=m;
  • node_t* m=n->next; n->next=head; n=m; head=n;
  • head=n->next; head->next=n; n=n->next;


 

代码的功能是要实现链表的反转。为了方便阐述,每个结点用①②③④⑤⑥等来标示。

在执行while(n)循环之前,有两句代码:

node_t* n=head;

head=NULL;

这两行代码的中:第一句的作用是用一个临时变量n来保存结点①,第二句是把head修改为NULL。

然后就开始遍历了,我们看到while循环里的那四句代码:

node_t* m=n; 
n=n->next; 
m->next=head; 
head=m;

先看前两句,用m来保存n,然后让n指向n的下一个结点,之所以复制 n 给 m ,是因为 n 的作用其实是  控制while循环次数  的作用,每循环一次它就要被修改为指向下一个结点。

再看后两句,变量head在这里像是一个临时变量,后两句让 m 指向了 head,然后 head 等于 m。

 

7、

若某表最常用的操作是在最后一个结点之后插入一个节点或删除最后一二个结点,则采用()省运算时间。

  • 单链表
  • 双链表
  • 单循环链表
  • 带头结点的双循环链表

D

带头结点的双向循环链表,头结点的前驱即可找到最后一个结点,可以快速插入,再向前可以找到最后一二个结点快速删除

单链表找到链表尾部需要扫描整个链表

双链表找到链表尾部也需要扫描整个链表

单循环链表只有单向指针,找到链表尾部也需要扫描整个链表

 

8、

单链表的存储密度(  )

  • 大于1
  • 等于1
  • 小于1
  • 不能确定

全麦白

存储密度 = 数据项所占空间 / 结点所占空间

 

9、完成在双循环链表结点p之后插入s的操作是

  • s->prior=p; s->next=p->next; p->next->prior=s ; p->next=s;

 

10、用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()

  • 仅修改队头指针
  • 仅修改队尾指针
  • 队头、队尾指针都可能要修改
  • 队头、队尾指针都要修改

 

当只有一个元素,出队列时,要将队头和队尾,指向-1.所以说队头和队尾都需要修改

 

 

链表刷了几百道吧,好题还有很多,以后接着更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并查集入门三连:HDU1213 POJ1611 POJ2236

HDU1213 http://acm.hdu.edu.cn/showproblem.php?pid1213 问题描述 今天是伊格纳修斯的生日。他邀请了很多朋友。现在是晚餐时间。伊格纳修斯想知道他至少需要多少桌子。你必须注意到并非所有的朋友都互相认识,而且所有的朋友都不想和陌生人呆在一起。 这个问题…

Java设计模式(2 / 23):观察者模式

定义 观察者(Observer)模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 OO设计原则:为了交互对象之间的松耦合设计而努力。 案例:气…

二叉树概述

各种实现和应用以后放链接 一、二叉树的基本概念 二叉树:二叉树是每个节点最多有两个子树的树结构。 根节点:一棵树最上面的节点称为根节点。 父节点、子节点:如果一个节点下面连接多个节点,那么该节点称为父节点,它…

Java设计模式(1 / 23):策略模式

定义 策略(Strategy)模式定义了算法族,分别封装起来,让它们之间可以互相替换 ,此模式让算法的变化独立于使用算法的客户。 案例:模拟鸭子应用 一开始 新需求:模拟程序需要会飞的鸭子 在父类新…

Java设计模式(3 / 23):装饰者模式

文章目录定义案例1:三点几啦首次尝试再次尝试设计原则:类应该对扩展开放,对修改关闭尝用装饰者模式装饰者模式特征本例的类图放码过来饮料类HouseBlendDarkRoastEspressoDecaf调料装饰类MilkMochaSoyWhip运行测试类案例2:编写自己…

c语言知识体系

原文:https://blog.csdn.net/lf_2016/article/details/80126296#comments

《游戏编程入门 4th》笔记(1 / 14):Windows初步

文章目录Windows编程概述获取Windows理解Windows消息机制多任务多线程事件处理DirectX快速概览Direct3D是什么Window程序基础创建第一个Win32项目理解WinMainWinMain函数调用完整的WinMainGetMessage函数调用寻求帮助Windows编程概述 DirectX,流行的游戏编程库。它…

17校招真题题集(1)1-5

注:本系列题目全是按照通过率降序来排列的,基本保证题目难度递增。 1、 题目名称:游戏任务标记 来源:腾讯 题目描述 游戏里面有很多各式各样的任务,其中有一种任务玩家只能做一次,这类任务一共有1024个…

《游戏编程入门 4th》笔记(2 / 14):监听Windows消息

文章目录编写一个Windows程序理解InitInstanceInitInstance函数调用InitInstance的结构理解MyRegisterClassMyRegisterClass函数调用MyRegisterClass的作用揭露WinProc的秘密WinProc函数调用WinProc的大秘密什么是游戏循环The Old WinMain对持续性的需要实时终止器WinMain和循环…

17校招真题题集(2)6-10

注:本系列题目全是按照通过率降序来排列的,基本保证题目难度递增。 6、 题目名称:Fibonacci数列 来源:网易 题目描述 Fibonacci数列是这样定义的: F[0] 0 F[1] 1 for each i ≥ 2: F[i] F[i-1] F[i-2] 因此&am…

QT5的数据库

#include <QtSql> QT sql QSqlDatabase类实现了数据库连接的操作 QSqlQuery类执行SQL语句 QSqlRecord类封装数据库所有记录 QSqlDatabase类 [cpp] view plaincopy print?QSqlDatabase db QSqlDatabase::addDatabase("QOCI"); db.setHostName("localh…

数据结构课上笔记6

本节课介绍了单链表的操作实现细节&#xff0c;介绍了静态链表。 链表带头的作用&#xff1a;对链表进行操作时&#xff0c;可以对空表、非空表的情况以及 对首元结点进行统一处理&#xff0c;编程更方便。 下面给出带头的单链表实现思路&#xff1a; 按下标查找&#xff1a; …

《Unity2018入门与实战》笔记(9 / 9):个人总结

个人总结 脚本语言学习的窍门 尽可能多读、多写、多说脚本语言&#xff01; Link 游戏制作步骤 设计游戏时一般会遵循5个步骤&#xff1a; 罗列出画面上所有的对象。确定游戏对象运行需要哪些控制器脚本。确定自动生成游戏对象需要哪些生成器脚本。准备好用于更新UI的调度…

17校招真题题集(3)11-15

注&#xff1a;本系列题目全是按照通过率降序来排列的&#xff0c;基本保证题目难度递增。 11、 题目名称&#xff1a;买苹果 来源&#xff1a;网易 题目描述 小易去附近的商店买苹果&#xff0c;奸诈的商贩使用了捆绑交易&#xff0c;只提供6个每袋和8个每袋的包装(包装不…

Qt学习:QDomDocument

QDomDocument类代表了一个XML文件 QDomDocument类代表整个的XML文件。概念上讲&#xff1a;它是文档树的根节点&#xff0c;并提供了文档数据的基本访问方法。由于元素、文本节点、注释、指令执行等等不可能脱离一个文档的上下文&#xff0c;所以文档类也包含了需要用来创建这些…

《事实:用数据思考,避免情绪化决策》笔记

文章目录一分为二负面思维直线思维恐惧本能规模错觉以偏概全命中注定单一视角归咎他人情急生乱一分为二 要做到实事求是&#xff0c; 就要做到当你听到一分为二的说法时&#xff0c; 你就能迅速认识到这种说法描述的是一种两极分化的图画&#xff0c; 而两极之间存在一道巨大的…

顺序存储线性表实现

在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。 顺序存储结构的主要优点是节省存储空间&#xff0c;因为分配给数据的存储单元全用存放结点的数据&#xff08;不考虑c/c语言中数组需指定大小的情况&#xff09;&#xff0c;结点之…

QT5生成.exe文件时,出现缺少QT5core.dll文件解决方法

在 http://qt-project.org/downloads 下载Qt SDK安装需要Qt版本。在QtCreator下&#xff0c;程序可以正常运行&#xff0c;但是当关闭QtCreator后&#xff0c;在DeBug目录下再运行相应的*.exe程序时&#xff0c;会提示缺少Qt5Core.dll错误。解决方法&#xff1a;添加电脑环境变…

《基于Java实现的遗传算法》笔记(7 / 7):个人总结

文章目录为何采用遗传算法哪些问题适合用遗传算法解决遗传算法基本术语一般遗传算法的过程基本遗传算法的伪代码为何采用遗传算法 遗传算法是机器学习的子集。在实践中&#xff0c;遗传算法通常不是用来解决单一的、特定问题的最好算法。对任何一个问题&#xff0c;几乎总有更…

单链表不带头标准c语言实现

链表是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点&#xff08;链表中每一个元素称为结点&#xff09;组成&#xff0c;结点可以在运行时动态生成。每个结点包括两个部分&#xff1a;一个是…