⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.23.c

📁 数据结构习题及答案
💻 C
字号:
2.23③ 设线性表A=(a1,...,am), B=(b1,...,bn),试写
一个按下列规则合并A、B为线性表C的算法,即使得
      C=(a1,b1,...,am,bm,bm+1,...,bn)  当m≤n时;
或者  C=(a1,b1,...,an,bn,an+1,...,am)  当m>n时。
线性表A、B和C均以单链表作存储结构,且C表利用A表和
B表中的结点空间构成。注意:单链表的长度值m和n均未
显式存储。

实现下列函数:
void Merge(LinkList ha, LinkList hb, LinkList &hc)
/* 依题意,合并带头结点的单链表ha和hb为hc  */

单链表类型定义如下:
typedef struct LNode{
    ElemType      data;
    struct LNode *next;
} LNode, *LinkList;
void Merge(LinkList ha, LinkList hb, LinkList &hc)
/* 依题意,合并带头结点的单链表ha和hb为hc  */
{

  LinkList p,q,hold1,hold2;
  p=ha->next;q=hb->next;
  if(!p){hc=hb;free(ha);}
  else{
       hc=ha;
       while(p&&q)
         {
          hold1=p->next;
          hold2=q->next;
          p->next=q;
          if(hold1)
             {
              q->next=hold1;
              p=hold1;q=hold2;
              }
          else break;
          }
      free(hb);
      }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -