• 线性表算法设计题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;
        
    }
  • 相关阅读:
    我的Ajax之旅(一):不能加载'AjaxControlToolkit'。。。拒绝访问
    网络编程(一):用C#下载网络文件的2种方法
    Locks
    Threads
    C语言中函数名和struct名可以重名!
    使用#include <pthread.h>
    APUE Chapter 7 (2)main函数的参数
    Creating a shared and static library with the gnu compiler [gcc][转]
    Signals
    APUE Chapter 7(3) – Memory layout of a C program
  • 原文地址:https://www.cnblogs.com/cpoint/p/2031236.html
Copyright © 2020-2023  润新知