#include"stdafx.h"
#include<stdlib.h>
#define LEN sizeof(struct student) struct student
{
int num;
struct student *next;
};
int n;
struct student *line(void) //生成链表
{
struct student *head;
struct student *p1, *p2;
n = 0;
p1 = p2 = (struct student*)malloc(LEN);
scanf_s("%d", &p1->num);
head = NULL;
while (p1->num)
{
n++;
if (n == 1)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (struct student*)malloc(LEN);
scanf_s("%d", &p1->num);
}
p2->next = NULL;
return head;
}
//把两个递增的链表合并为一个递减的链表,并去除重复元素。
int main()
{
struct student *aaa(struct student *A, struct student *B);
struct student *pa, *pb;
pa = line();
pb = line();
aaa(pa, pb);
return 0;
}
struct student *aaa(struct student *pa, struct student *pb)
{
struct student *pc;
struct student *p, *q, *s;
pc = pa;
pa = pa->next; pb = pb->next;
pc->next = NULL;
while (pa && pb)//逆序排列
{
if (pa->num <= pb->num)
{
s = pa; pa = pa->next;
}
else
{
s = pb; pb = pb->next;
}
s->next = pc->next;
pc->next = s;
}
if (pa == NULL)
pa = pb;
while (pa)
{
s = pa; pa = pa->next;
s->next = pc->next;
pc->next = s;
}
p = pc;
while (p->next)//去重
{
q = p;
while (q->next)
{
if (q->next->num == p->num)
{
s = q->next;
q->next = s->next;
free(s);
}
else q = q->next;
}
p = p->next;
}
while (pc)//输出节点
{ pc = pc->next;
printf("%d", pc->num); }
return 0;
}
//输入pa和pb的第一个元素会被忽略。
//原因:输入的第一个数字被设为头结点,所以没有参与排序。

C语言两个升序递增链表逆序合并为一个降序递减链表,并去除重复元素的更多相关文章

  1. 顺序表习题(1)-打印非递减数组a与b的升序并集(去除重复元素)

    void Print_Union(SqList a,SqList b) { , q = ; //初始化指针 ; //记录上一次打印的元素 while (p!=a.length&&q!= ...

  2. python 根据两个字段排序, 一个升序, 一个降序

    from collections import Counter c = Counter(input()) l=sorted(c.items(), key=lambda s:(-s[], s[])) ] ...

  3. Excel怎么把两个单元格中的文字合并到一个单元格中

    使用&符号,可以将字符串和单元格中的内容拼接起来

  4. C语言链表中数组实现数据选择排序,升序、降序功能主要难点

    链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址 ...

  5. 【编程题目】请修改 append 函数,利用这个函数实现两个非降序链表的并集

    42.请修改 append 函数,利用这个函数实现(链表):两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5另外只能输出结 ...

  6. LeetCode初级算法--链表02:合并两个有序链表

    LeetCode初级算法--链表02:合并两个有序链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...

  7. JS实现数组排序:升序和降序

    如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序.即 a 和 b 是两个将要被比较的元素: 如果 compareFunction(a, b) 小于 0 ,那么 a 会 ...

  8. LintCode:链表操作(合并与反转)

    描述: (1)翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null ********************** ...

  9. mysql中的升序和降序以及一个字段升序和一个字段降序

    mySql中,升序为asc,降序为desc.例如: 升序:select   *  from  表名 order by  表中的字段 asc(mysql中默认是升序排列,可不写) 降序:select   ...

随机推荐

  1. Python爬虫:为什么你爬取不到网页数据

    前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...

  2. Luogu2915 [USACO08NOV]奶牛混合起来Mixed Up Cows (状压DP)

    枚举末位状态 #include <iostream> #include <cstdio> #include <cstring> #include <algor ...

  3. LuoguP1725 琪露诺 (动态规划)

    \(单调队列\) 或 \(堆\) 优化 #include <iostream> #include <cstdio> #include <cstring> #incl ...

  4. 10种有用的Linux Bash_Completion 命令示例

    摘要:我们可以对这个 bash 补全进行加速,并使用 complete 命令将其提升到一个新的水平. 本文分享自华为云社区<有用的 Linux Bash_Completion 命令示例(Ster ...

  5. redis-string类型命令

    一.APPEND key value 如果 key 已经存在,并且值为字符串,那么这个命令会把 value 追加到原来值(value)的结尾. 如果 key 不存在,那么它将首先创建一个空字符串的ke ...

  6. Linux 更换国内源

    1.事件背景 事情起因是因为我想安装xvfb,执行sudo apt-get install xvfb发现安装报错,看报错原因是被墙导致,因为我用的默认源也没有挂代理:然后就百度,发现都是互相抄,什么换 ...

  7. 如何将原生微信小程序页面改成原生VUE框架的H5页面

    项目背景: 公司为了实现小程序与H5页面共同覆盖,全面推广.特此想将已有的小程序进行快速改造上线(二周内),研发出H5版本.目前公司前端技术较为薄弱,现有的技术解决方案还停留在JSP. 问题: 如何将 ...

  8. github配置添加SSH秘钥

    在 github 上添加 SSH key 的步骤: 1.首先需要检查你电脑是否已经有 SSH key 运行 git Bash 客户端,输入如下代码: $ cd ~/.ssh $ ls 这两个命令就是检 ...

  9. 使用metricbeat监控system和nginx

    下载并解压缩metricbeat metricbeat.yml配置文件设置: setup.kibana: host: "192.168.75.21:5601" output.ela ...

  10. MES系统和ERP系统的区别是什么?

    首先得明白一点:MES(Manufacturing Execution System,即制造执行系统)系统跟ERP(Enterprise Resource Planning,企业资源计划)系统是两个完 ...