zoukankan      html  css  js  c++  java
  • 线性表算法设计题2.15

    已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。试写一算法将这两个链表连接在一起,假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。

     C code:

     #include<stdio.h>

    #include<stdlib.h>
    #define LIST_INIT_SIZE 10
    #define LIST_INCREMENT 2
    #define ERROR 0
    #define OK 1
    #define OVERFLOW -1
    #define TRUE 1
    typedef 
    int Status;

    struct LNode
    {
         
    int data;
         LNode 
    *next;
    };
    typedef LNode 
    *LinkList;

    void InitList(LinkList &L)
    {
         L
    =(LinkList)malloc(sizeof(LNode));
         
    if(!L)
           exit(OVERFLOW);
         L
    ->next=NULL;
    }

    void CreateList(LinkList &L,int n)
    {
         
    int i;
         LinkList p,q;
         L
    =(LinkList)malloc(sizeof(LNode));
         L
    ->next=NULL;
         q
    =L;
         printf(
    "Please input %d numbers:\n",n);
         
    for(i=1; i<=n; i++)
         {
              p
    =(LinkList)malloc(sizeof(LNode));
              scanf(
    "%d",&p->data);
              q
    ->next=p;
              q
    =q->next;
            }
            p
    ->next=NULL;
    }

    void PrintList(LinkList L)
    {
         LinkList p;
         p
    =L->next;
         
    while(p)
         {
              printf(
    "%d ",p->data);
              p
    =p->next;
            }
            printf(
    "\n");
        
    }

    LinkList connect(LinkList La,LinkList Lb)
    {
         LinkList Lc,p,q;
         Lc
    =(LinkList)malloc(sizeof(LNode));
         p
    =La->next;
         Lc
    ->next=p;
         q
    =Lb->next;
         
    while(p->next)
         {
              p
    =p->next;
            }
            p
    ->next=q;
            free(La);
            free(Lb);
            
    return Lc;
    }

    int main()
    {
         LinkList La,Lb,Lc;
         CreateList(La,
    8);
         CreateList(Lb,
    4);
         printf(
    "LinkList La: ");
         PrintList(La);
         printf(
    "\n");
         printf(
    "LinkList Lb: ");
         PrintList(Lb);
         printf(
    "\n");
         Lc
    =connect(La,Lb);
         printf(
    "LinkList Lc: ");
         PrintList(Lc);
         
    return 0;
        
    }
  • 相关阅读:
    Linux查看系统资源占用
    覆盖索引有何用?
    Java8新特性
    架构的力量!!2016解密互联网公司架构技术
    作为程序员,如何防辐射?
    Mysql查询正在运行的事务以及杀掉它
    Hbase设计实战
    不可不知的网络知识与工具
    MySQL数据库事务剖析
    dos插入mysql乱码
  • 原文地址:https://www.cnblogs.com/cpoint/p/2031236.html
Copyright © 2011-2022 走看看