• 2022-06-03
    有一个单链表,其结点的元素值以非递减有序排列,编写一个函数删除该单链表中多余的元素值相同的结点。
  • 本题采用的算法是:从头到尾扫描该单链表,并作这样的操作:若当前结点的元素值也后继结点的元素值不相等,则指针后移,否则删除改后继结点,直到扫描完所有的结点,实现本题功能的函数如下:node*del(head)node*head;{node*q;if(head!=null)/*当前结点的元素值与后续结点的元素值不相等,则指针后移,否则删除该后续结点*/{while(pànext!=null)if(pàdata!=pànextàdata)p=pànext;else{q=pànext;pànext=qànext;free(q);}}return(head);}

    内容

    • 0

      在单链表中删除一个结点要修改 1 个指针域的值.( )

    • 1

      给定一个带头结点的单链表,设L为头指针,结点的结构定义如下,试写一算法在该链表中删除元素值为e的结点,假设链表中没有元素值重复的结点并且e一定存在。 typedef struct Lnode{ int data; struct Lnode *next; } Lnode,*LinkList; //单链表结构 void (LinkList &L,int e ) { //在该函数中补充代码 }

    • 2

      在一个长度为n(n>l)的带头结点的单链表L上,另设有尾指针r(指向尾结点),执行( )操作与链表的长度有关。 A: 删除单链表中的第一个元素 B: 删除单链表中的尾结点 C: 在单链表第一个元素前插入一个新结点 D: 在单链表最后一个元素后插入一个新结点

    • 3

      假设以带头结点的单链表表示线性表,单链表的类型定义如下:typedefstructnode{ intdata; structnode *next;}LinkedNode,*LinkedList;编写算法,删除值无序的线性表中值最大的元素(设表中各元素的值互不相同)。

    • 4

      设head为单链表的头指针,并设单链表带有头结点,编写算法将单链表中的数据元素按照数据元素的值递增有序的顺序进行就地排序。