#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. pat链表专题训练+搜索专题

    本期题目包括: 1074:https://pintia.cn/problem-sets/994805342720868352/problems/994805394512134144 1052:http ...

  2. Luogu2798 爆弹虐场 (二分,Kruskal)

    二分答案,判定连通性 #include <iostream> #include <cstdio> #include <cstring> #include <a ...

  3. Pycharm5个非常有用的技巧

    PyCharm 是一款非常强大的编写 python 代码的工具.掌握一些小技巧能成倍的提升写代码的效率,本篇介绍几个经常使用的小技巧. 一.分屏展示 当你想同时看到多个文件的时候: 右击标签页: 选择 ...

  4. Postman中的断言

    Postman设置断言 一.断言的定义 1.什么是断言? 一般一个完整的接口测试,包括:请求->获取响应正文->断言,请求和获取响应正文很常见.断言一般是对请求的响应结果做操作,判断预期结 ...

  5. Usmjeri(COCI2017.2)题解

    题意 给一棵N个节点的树,编号从1到N,再给定m对点(u,v),你要将树上的每条无向边变为有向边,使得给定的点对都满足u能到达v或v能到达u.问有多少种不同的方案,答案对(1e9+7)求余. 1 ≤ ...

  6. 【PostgreSQL】PostgreSQL 15移除了Stats Collector

    试用即将发行的PostgreSQL 15的人会发现少了一个后台进程:​ postgres 1710 1 0 04:03 ? 00:00:00 /usr/pgsql-15/bin/postmaster ...

  7. 使用filebeat接收rsyslog的日志

    安装 下载好rpm包后直接安装 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.7.0-x86_ ...

  8. Dapr 的 gRPC组件 (又叫可插拔组件) 的提案

    Dapr 在1.9 版本中的提案,计划在 Dapr Runtime 中组件采用 外部 gRPC 组件: https://github.com/dapr/dapr/issues/3787 ,针对这个 g ...

  9. 注解@PostConstruct分析

    作用 1.注解@PostConstruct可以添加在类的方法上面,如果这个类被IOC容器托管,那么在对Bean进行初始化前的时候会调用被这个注解修饰的方法 被定义在哪里? 1.被定义在了CommonA ...

  10. java script 日常学习 正则表达式

    <!DOCTYPE html><html><head> <title>函数的运用</title> <meta charset=&quo ...