给定一个带头结点的单链表,设L为头指针,结点的结构定义如下,试写一算法在该链表中删除元素值为e的结点,假设链表中没有元素值重复的结点并且e一定存在。 typedef struct Lnode{ int data; struct Lnode *next; } Lnode,*LinkList; //单链表结构 void (LinkList &L,int e ) { //在该函数中补充代码 }
举一反三
- 给定一个带头结点的单链表,设L为头指针,结点的结构定义如下,试写一算法删除链表中...}(要求:在纸上写出代码,然后拍照上传
- 设链接表带头节点,头指针为HL,其中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该线性表的有序性。并分析算法的时间复杂度。struct LNode //LNode为结点类型名{ ElemType data; //data代表数据元素 LNode *next; //next为指向下一结点的指针}
- 在一个长度为n(n>l)的带头结点的单链表L上,另设有尾指针r(指向尾结点),执行( )操作与链表的长度有关。 A: 删除单链表中的第一个元素 B: 删除单链表中的尾结点 C: 在单链表第一个元素前插入一个新结点 D: 在单链表最后一个元素后插入一个新结点
- 下述动态建立链表结点的标准C语法语句,( )是正确的 A: p = (struct LNode)malloc(sizeof(struct LNode)); B: p = (struct LNode *)malloc(sizeof(struct LNode *)); C: p = (struct LNode)malloc(sizeof(struct LNode *)); D: p = (struct LNode *) malloc(sizeof(struct LNode));
- 写一算法,将带头结点的单链表置空,即删除其上所有结点,使单链表成为一个空表。/*提示:定义一个指向第一个结点的指针p;p=L->next;用循环来删除头结点后面的那个结点(其实就是改变指针方向,释放头结点后面的那个结点),循环的条件是L->next不空*/voidClearList(LinkListL)//L为带头结点的单链表的头指针{}