早教吧 育儿知识 作业答案 考试题库 百科 知识分享

两个数据结构问题,求算法1.假设有一个带头结点的单链表h,它的元素内容按递增有序排列。试设计一个算法,将其中内容相同的元素只保留一个,其余的全部删除,要求算法的时间效率

题目详情
两个数据结构问题,求算法
1.假设有一个带头结点的单链表h,它的元素内容按递增有序排列。试设计一个算法,将其中内容相同的元素只保留一个,其余的全部删除,要求算法的时间效率尽可能的高。2.已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。试设计一个算法将这两个链表连接在一起(即一个链表在另一个链表之后),假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成。
▼优质解答
答案和解析
  1. 第一题

    void deleteSameNode(ListNode *h)

    {

          ListNode *cur = h->next;

          ListNode *tmp;

          while (cur->next != NULL)

          {

                if (cur->data == cur->next->data)

                {

                     tmp = cur->next;

                     cur->next = cur->next->next;

                     free(tmp);

                }

                else

                     cur = cur->next;

          }

    }

  2. 第二题

    void mergeList(ListNode *hc, ListNode *ha, ListNode *hb, int m, int n)

    {

         ListNode *cur;

         int i = 0;

         if (m < n)

         {

              for (i = 0, cur = ha; cur->next != NULL;  cur = cur->next);

              cur->next = hb->next;

               hc->next = ha->next;

         }

         else

          {

                  for (i = 0, cur = hb; cur->next != NULL;  cur = cur->next);

                  cur->next = ha->next;

                  hc->next = hb->next;

             }

             free(ha);

             free(hb);

       }

看了 两个数据结构问题,求算法1....的网友还看了以下: