c-连接两个链表
概述
还是相对简单,不过要记得释放不用的头结点即可.
代码为:
//将lList2头结点连接在lList1尾结点的后面.
void
combine(linklist lList1, linklist lList2) {
Linknode *lst01Tail = lList1; //最终指向lList1的尾结点.
Linknode *tmp; //临时指向lList2的头结点,用于释放lList2表的头结点.
while (lst01Tail->next) {
lst01Tail = lst01Tail->next;
} tmp = lList2;
lst01Tail->next = lList2->next; //lList1的尾结点连接lList2的首节点.
//释放释放lList2表的头结点.
free(tmp);
tmp = NULL;
lList1->data += lList2->data; //修改链表的长度.
}
完整代码:
#include <stdio.h>
#include <malloc.h> #define FALSE 0
#define TRUE 1 typedef struct node {
int data;
struct node *next;
} Linknode; typedef Linknode *linklist; //根据指定结点的个数,初始化一个带有头结点的单链表.
linklist
init(int n) {
linklist lList = (linklist)malloc(sizeof(struct node)); //头结点.
lList->next = NULL; //初始时链表为空.
lList->data = n; //头结点存储总元素个数.
if(!lList) {
printf("out of memory!\n");
return FALSE;
}
int i;
Linknode *tail = lList;
for(i = ; i < n; i++) {
Linknode * nNew = (Linknode *)malloc(sizeof(struct node));
if(!nNew) {
printf("out of memory!\n");
return FALSE;
}
nNew->data = i + ; //为新结点赋值.
//重新指定尾结点.
tail->next = nNew;
tail = nNew;
nNew->next = NULL;
}
return lList;
} //遍历单链表所有结点.
void
traverse(linklist lList) {
Linknode *node;
node = lList->next; //开始时指向第一个结点.
while(node) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
return;
} //将lList2头结点连接在lList1尾结点的后面.
void
combine(linklist lList1, linklist lList2) {
Linknode *lst01Tail = lList1; //最终指向lList1的尾结点.
Linknode *tmp; //临时指向lList2的头结点,用于释放lList2表的头结点.
while (lst01Tail->next) {
lst01Tail = lst01Tail->next;
} tmp = lList2;
lst01Tail->next = lList2->next; //lList1的尾结点连接lList2的首节点.
//释放释放lList2表的头结点.
free(tmp);
tmp = NULL;
lList1->data += lList2->data; //修改链表的长度.
} int
main(void) {
int n = ;
linklist lList = init(n);
linklist lList2 = init(n);
traverse(lList);
combine(lList, lList2);
traverse(lList);
printf("\n");
}
c-连接两个链表的更多相关文章
- 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列
1.我的思路先将b链表连接在a链表的后面,这个很容易实现,将a链表最后的结点中的p.next改为指向b链表的头结点即可. 再将这个新链表用选择排序即可. 代码如下: #include<stdio ...
- 学习TensorFlow,concat连接两个(或多个)通道
深度学习中,我们经常要使用的技术之一,连接连个通道作为下一个网络层的输入,那么在tensorflow怎么来实现呢? 我查看了tensorflow的API,找到了这个函数: tf.concat(conc ...
- LeetCode 24——两两交换链表中的节点
1. 题目 2. 解答 新建一个哨兵结点作为头结点,然后每次交换相邻两个结点.并依次将它们连接到新链表中去,再将原链表中后面的结点也串到新链表后面.直至到达链尾或者剩余一个节点,则此时返回新链表的头结 ...
- 剑指offer36:两个链表的第一个公共结点
1 题目描述 输入两个链表,找出它们的第一个公共结点. 2 思路和方法 方法一: 用两个指针同时从两个链表的表头开始走,当走到自己的链表结尾的时候开始从另一个链表的表头开始向后走.终止条件就是两个指针 ...
- [LeetCode] Intersection of Two Linked Lists 求两个链表的交点
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...
- 剑指Offer面试题:31.两个链表的第一个公共节点
一.题目:两个链表的第一个公共节点 题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义如下,这里使用C#语言描述: public class Node { public int key; p ...
- 剑指offer七:两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点. import java.util.*; public class Solution { public ListNode FindFirstCommonNode ...
- JavaScript concat() 方法-连接两个或多个数组
一,定义和用法 concat() 方法用于连接两个或多个数组. 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 语法 arrayObject.concat(arrayX,arrayX,. ...
- 剑指Offer 两个链表的第一个公共结点
题目描述 输入两个链表,找出它们的第一个公共结点. 思路: 题目说的很笼统,应该是有2个链表,找出公共点,第一个公共点后面的链表是共同所有的.可以用map做,直接检测map里有没有出现这个节点. ...
- IT公司100题-7-判断两个链表是否相交
问题:有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环.1.如何判断一个链表是不是这类链表? 问题扩展:1.如果链表可能有环呢?2.如果需 ...
随机推荐
- 要开始深入VMM了。
得到一个VMM机器所有的节点状态 Quick one-liner to generate a CSV of virtual machines, sorted by their hosts. Repor ...
- Bull And Cows
package cn.edu.xidian.sselab.hashtable; import java.util.HashMap;import java.util.Map;import java.ut ...
- (转载)MySQL 统计数据行数 Select Count
(转载)http://www.5idev.com/p-php_mysql_select_count.shtml 统计数据行数 SELECT COUNT() FROM 语法用于从数据表中统计数据行数. ...
- Ubuntu下安装Skyeye
ubuntu12下安装skyeye1.3.2 1.首先安装skyeye的依赖包,比如gtk的依赖,一般Ubuntu 都默认安装了,稳妥起见,运行下面的代码: sudo apt-get install ...
- HDOJ 2015 偶数求和
Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值 ...
- cf702C Cellular Network
C. Cellular Network time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- Nodejs in Visual Studio Code 11.前端工程优化
1.开始 随着互联网技术的发展,企业应用里到处都是B/S设计,我有幸经历了很多项目有Asp.Net的,有Html/js的,有Silverlight的,有Flex的.很遗憾这些项目很少关注前端优化的问题 ...
- QQ互联 回调地址
http://wiki.connect.qq.com/%E5%9B%9E%E8%B0%83%E5%9C%B0%E5%9D%80%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98% ...
- UVA 10820 - Send a Table 数论 (欧拉函数)
Send a Table Input: Standard Input Output: Standard Output When participating in programming contest ...
- Swing实现文件选择(目录选择)附导出
具体生成工具如图: (1) (2) (3) (4) 源码 : example.java package org.qiailin.jframe; import java.awt.Container; i ...