函数:求有头结点单链表长度

输入一个正整数 n(0<n<=9)和一组(n个)升序的整数,建立单向链表,再输入一个整数 x,把 x 插入到这组数据中,使该组数据仍然有序。

输入输出示例:括号内为说明

p=q;//将p移到链表的下一个位置上,以便下一次的串联 head=q;//如果替换了第一个数,记得要修改头节点

请编写程序实现单链表插入、删除结点等基本算法。给定一个单链表和一系列插入、删除结点的操作序列,输出实施上述操作后的链表。单链表数据域值为整数。

输入第1行为1个正整数n,表示当前单链表长度;第2行为n个空格间隔的整数,为该链表n个元素的数据域值。第3行为1个正整数m,表示对该链表施加的操作数量;接下来m行,每行表示一个操作,为2个或3个整数,格式为0 k d或1 k。0 k d表示在链表第k个结点后插入一个数据域值为d的结点,若k=0则表示表头插入。1 k表示删除链表中第k个结点,此时k不能为0。注:操作序列中若含有不合法的操作(如在长度为5的链表中删除第8个结点、删除第0个结点等),则忽略该操作。n和m不超过100000。

输出为一行整数,表示实施上述m个操作后的链表,每个整数后一个空格。输入数据保证结果链表不空。

p=q;//将p移到链表的下一个位置上,以便下一次的串联 int m;//为对链表的操作数量
请编写创建链表和输出链表的函数。对于以下数据结点的结构定义,
针对带头结点的链表,请编程完成以下功能。
输入数据包含若干组命令和数据,一组数据中的第1个字符代表命令,
接下来的是该命令需要的数据。
(2)如果命令是A,后跟一个整数data,功能为向链表尾部追加一个数据data,
(3)如果命令是C,后跟一个整数N,再跟N个整数,功能为向链表尾部追加N个
(4)如果命令是P,功能遍历输出链表中所有数据,数据间用一个空格分隔,对应

以上为上一题目的内容,在此基础上,增加设计如下功能:

(5)如果命令是N,后跟一个整数n和d,功能为向链表的第n个位置插入数据d,
(6)如果命令是F,后跟一个整数d,功能为在链表查找数据d,返回其位序,若
(7)如果命令是D,后跟一个整数n,功能为删除链表第n个位置的数据,可通过

若干组命令和数据,很多命令和数据写在一起请注意识别。

根据输入命令输出相应内容,详见输出样例。

p=head->next;//因为这是一个带头结点的链表,所以head实际上是没有数的,它指向的才存了第一个数
  • 若已建立下面的链表结构,指针 pq 分别指向图中所示结点,则不能将 q 所指结点插入到链表末尾的语句是(C )。
  • 在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(Structure)。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。
  • 逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的
  • 数据的逻辑结构分为线性结构和非线性结构
    • 集合 结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。 类似于数学上的集合
    • 线性结构 结构中的数据元素之间只存在一对一的关系。比如排队
    • 树形结构 结构中的数据元素之间存在一对多的关系。比如家族族谱
    • 图状结构或网状结构 结构中的数据元素之间存在多对多的关系。 比如地图
  • 存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。数据的存储结构主要有:顺序存储、链式存储、索引存储和散列存储。

如果问的是链表长度,也等同于求节点的数量,那么当然是算的。

但是头结点是使单链表操作更容易实现的而存在的,一般单链表求长度问的都是元素的数目,这是一般是不算的。你可以参考一下以下一个求链表长度的函数:

学生党个人理解,有错误希望批评指正

我要回帖

更多关于 单链表的长度是什么 的文章

 

随机推荐