2.1【问题描述】编写一个程序,根据从标准输入接收的指令来维护和操作排序的链表。链表是按顺序维护的,这意味着链表中的数据在每次操作后都以递增的数字顺序存储。请注意,在创建新节点时,需要使用malloc为它们分配空间;一旦不再需要任何已分配的空间,就应该使用free将其释放。还要注意,链表不包含重复的值。2.2【基本要求】链表支持两种操作指令。插入n:向链表中添加一个整数n。如果链表中已经存在n,则它什么也不做。指令格式是一个i后跟一个空格和一个整数n。删除n:从链表中删除一个整数n。如果链表中不存在n,它什么也不做。指令格式是d后跟一个空格和一个整数n。在每个命令之后,程序将输出链表的长度,然后是链表的内容,按照从第一个(最小)到最后一个(最大)的顺序。输入格式:输入的每一行都包含一条指令。每行都以一个字母(或者是“i”或者是“d”)开头,后跟一个空格,然后是一个整数。以“i”开头的一行表示该整数应该插入链表中。以“d”开头的一行表示应从链表中删除该整数。输入i和d以外的字符程序结束运行。输出格式:执行每个指令后,程序将输出一行文本,其中包含链表的长度、一个冒号以及按顺序排列的链表元素,所有内容都用空格分隔。程序运行操作示例:(i或d开头的行是输入行,其他是输出行) i 51: 5d 31: 5i 32: 3 5i 5003: 3 5 500d 52: 3 500下面是链表结点类型定义和链表初始化程序 //结点类型typedef struct LNode{int data;struct LNode *next;}LNode; typedef LNode *LinkList;//初始化带头结点的单链表int InitList_L(LinkList &L){L=(LinkList)malloc(sizeof(LNode));if(!L) exit(-2);(L)->data=0;(L)->next=NULL;return 1;