我在用C语言实现链表并集的时候,我的思路是:先将两个链表合并再将合并后的链表排序,最后进行链表去重操作,从而实现链表并集。
//3.5L1和L2并集的实现
LinkList UnionList(LinkList L1, LinkList L2, LinkList R) {
LinkList P,Sort;
LinkList p,q;
P = (LinkList)malloc(sizeof(Node));
R = mergeList(L1, L2,P);//R时合并后的链表
Sort = sortLikt(R);//Sort时排序后的链表
p = Sort;
q = p->next;
while (p != NULL && q != NULL) {
if (p->data == p->next->data) {
p->next = q->next;
}
else {
p = p->next;
q = q->next;
}
}
return Sort;
}
上述代码实现的时候无法运行,但是像下面这样写就没问题,为什么代码里不可以定义q = p->next呢?
//3.5L1和L2并集的实现
LinkList UnionList(LinkList L1, LinkList L2, LinkList R) {
LinkList P,Sort;
LinkList p,q;
P = (LinkList)malloc(sizeof(Node));
R = mergeList(L1, L2,P);//R时合并后的链表
Sort = sortLikt(R);//Sort时排序后的链表
p = Sort;
while (p != NULL && p->next != NULL) {
if (p->data == p->next->data) {
p->next = p->next->next;
}
else {
p = p->next;
}
}
return Sort;
}
问题主要出现在链表去重部分,你可以參考下面的修改一下:
LinkList UnionList(LinkList L1, LinkList L2, LinkList R) {
LinkList P, Sort;
LinkList p, q;
P = (LinkList)malloc(sizeof(Node));
R = mergeList(L1, L2, P); // R时合并后的链表
Sort = sortLikt(R); // Sort时排序后的链表
p = Sort;
q = p->next;
while (q != NULL) {
if (p->data == q->data) {
p->next = q->next;
free(q); // 释放被删除节点的内存
q = p->next;
} else {
p = q;
q = q->next;
}
}
return Sort;
}
C语言快慢链表判断链表是否有环 hasCycle函数while(slow != NULL && fast !=NULL)时会报错 那为什么写成while(slow != NULL && fast->next != NULL)就没问题啊,快慢指针不是当slow和fast相遇的时候,证明链表有环吗?当slow和fast都不为空时,slow向后移动一位,fast移动两位,当他们相遇的时候即链表有环,若s
本文向大家介绍C语言单链表的实现,包括了C语言单链表的实现的使用技巧和注意事项,需要的朋友参考一下 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。 链表结构: SList.h SList.cpp Test.cpp 以上内容是小编给大家介绍的C语言单链表的实现代码,希望对大家有所帮助!
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 我的链表合并以及排序的函数(mergeTwoLists)代码是哪里有问题吗,为什么我在VS上运行没报错,leetcode上运行就报错了 效果图片 leetcode报错图片
本文向大家介绍C语言实现链表贪吃蛇,包括了C语言实现链表贪吃蛇的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现贪吃蛇的具体代码,供大家参考,具体内容如下 用C语言链表写的贪吃蛇(程序设计时做的,做的不好大佬勿喷) 借助游戏内容分析贪吃蛇所需的功能主要包括这几块: 1.移动光标模块 2.打印地图模块和基本规则信息 读取最高分文件 3.打印初始蛇模块 打印时给予蛇的初始移动方向
本文向大家介绍C语言实现单链表反转,包括了C语言实现单链表反转的使用技巧和注意事项,需要的朋友参考一下 一、理解指针 看懂链表的结构并不是很难,但是一旦把它和指针混在一起,就很容易让人摸不着头脑。所以,要想写对链表代码,首先就要理解好指针。 有些语言有“指针”的概念,比如 C 语言;有些语言没有指针,取而代之的是“引用”,比如 Java、Python。不管是“指针”还是“引用”,实际上,它们的
本文向大家介绍C语言实现单链表实现方法,包括了C语言实现单链表实现方法的使用技巧和注意事项,需要的朋友参考一下 C语言实现单链表实现方法 链表和我们之前实现过的顺序表一样,都是简单的数据结构,链表分为单向链表、双向链表、循环链表。而单向链表又分为两种实现方法,一种为带头节点的单链表,一种为不带头节点的单链表。我们来具体看看不带头节点的单链表的实现 单链表:它是一种链式存储的线性表,用一组地址任意的