原创博文,转载请注明出处

链表分类:单链表,插入删除和查找的时间复杂度均为O(n)

              双链表,插入、删除和查找的时间复杂度为O(1)

              循环链表,表中最后一个节点的指针不是NULL,而改为指向头结点,从而整个链表形成一个环。

             静态链表,借助数组来描述线性表的链式存储结构,这儿的指针是结点的相对地址。和顺序表一样需要预先分配一块连续的内存空间。以next==0作为其结束的标志。

综合应用:

    1.设计一个递归算法,删除不带头节点的单链表L中所有值为x的节点。

            思路:可以设计一个函数f(L,x)删除以L为首结点指针的单链表中所有值为x的结点,那么f(L->next,x)则是删除以L->next为首结点指针的单链表中所有值等于x的结点。

                    借助一个递归工作栈,深度为O(n),时间复杂度为O(n)

 1 void Del_x(Linklist &L, ElemType x){
 2       LNode *p;   //p指向待删除结点
 3       
 4       if(L==NULL)
 5             return;
 6       if(L->data==x){
 7             p=L;
 8             L=L->next;
 9             free(p);
10             Del_x(L, x);    
11     }           
12      else
13            Del_x(L->next, x);       
14 }
View Code

相关文章:

  • 2022-02-06
  • 2021-05-18
  • 2022-02-12
  • 2022-12-23
  • 2021-10-03
  • 2021-05-02
  • 2021-06-08
猜你喜欢
  • 2021-09-19
  • 2022-12-23
  • 2021-09-10
  • 2021-06-20
  • 2022-02-05
相关资源
相似解决方案