简单单链表合并

代码段:

复制代码
  1 #include "stdafx.h"
  2 #include<stdio.h> 
  3 #include<stdlib.h>
  4 
  5 
  6 //节点结构体
  7 typedef struct LNode
  8 {        
  9     int data;
 10     struct LNode *next;
 11 };
 12 
 13 
 14 //创建一个空链表
 15 LNode*  CreateEmptyList()
 16 {
 17     return NULL;
 18 }
 19 
 20 //添加头节点
 21 LNode* CreateListHead(LNode *ListHead,int data)
 22 {
 23     ListHead = (LNode *)malloc(sizeof(LNode));
 24     ListHead->data = data;
 25     ListHead->next = NULL;
 26     return ListHead;
 27 }
 28 
 29 //在链表添加节点
 30 LNode* AddNode(LNode *List,int data)
 31 {
 32     List->next = (LNode *)malloc(sizeof(LNode));
 33     List = (LNode *)List->next;
 34     List->data = data;
 35     List->next = NULL;
 36     return List;
 37 }
 38 
 39 
 40 int main()
 41 {
 42     int data1 = 0;
 43     int count = 0;
 44     int sum = 0;
 45     int i = 0;
 46     LNode *Temp = NULL;
 47     LNode *List1 = CreateEmptyList();
 48     LNode *List2 = CreateEmptyList();
 49     printf("链表1的长度:");
 50     scanf("%d",&count);
 51     sum +=count;
 52     printf("输入链表1的值:"); 
 53 
 54     for (i = 0 ;i<count;i++)
 55     {
 56         //scanf("%d",&data1);
 57         data1 = rand();
 58         if (List1 == NULL)
 59         {
 60             List1 = CreateListHead(List1,data1);
 61             Temp = List1;
 62         }
 63         else
 64         {
 65             
 66             Temp = AddNode(Temp,data1);
 67         }
 68     }
 69     
 70 
 71     printf("链表2的长度:");
 72     scanf("%d",&count);
 73     sum +=count;
 74     printf("输入链表1的值:"); 
 75 
 76     for (i = 0 ;i<count;i++)
 77     {
 78         scanf("%d",&data1);
 79         if (List2 == NULL)
 80         {
 81             List2 = CreateListHead(List2,data1);
 82             Temp = List2;
 83         }
 84         else
 85         {
 86 
 87             Temp = AddNode(Temp,data1);
 88         }
 89     }
 90 
 91     Temp = List1; //寻找中间变量,将链表1的值赋值给中间变量
 92     while(Temp->next)//当找到链表的最后一个节点就跳出循环
 93     {
 94         Temp = Temp->next;//将中间节点的下一个指针指向中间变量
 95     }//寻找链表1 的最后一个节点
 96     Temp->next =List2;//链表2的头指针赋值给链表1的最后一个元素
 97     //链表1的最后一个节点的指针指向链表2的头指针
 98 
 99 
100     Temp = List1;
101     for(i=0;i<sum;i++)
102     {
103         printf("%d ",Temp->data);
104         Temp =(LNode *) Temp->next;
105 
106     }
107 
108 
109     system("pause");
110     return 0;
111 } 
复制代码

 

posted @   菜鸡拾光  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示