输入一个正整数 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实际上是没有数的,它指向的才存了第一个数如果问的是链表长度,也等同于求节点的数量,那么当然是算的。
但是头结点是使单链表操作更容易实现的而存在的,一般单链表求长度问的都是元素的数目,这是一般是不算的。你可以参考一下以下一个求链表长度的函数:
学生党个人理解,有错误希望批评指正