C语言两个升序递增链表逆序合并为一个降序递减链表,并去除重复元素
#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)-打印非递减数组a与b的升序并集(去除重复元素)
void Print_Union(SqList a,SqList b) { , q = ; //初始化指针 ; //记录上一次打印的元素 while (p!=a.length&&q!= ...
- python 根据两个字段排序, 一个升序, 一个降序
from collections import Counter c = Counter(input()) l=sorted(c.items(), key=lambda s:(-s[], s[])) ] ...
- Excel怎么把两个单元格中的文字合并到一个单元格中
使用&符号,可以将字符串和单元格中的内容拼接起来
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址 ...
- 【编程题目】请修改 append 函数,利用这个函数实现两个非降序链表的并集
42.请修改 append 函数,利用这个函数实现(链表):两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5另外只能输出结 ...
- LeetCode初级算法--链表02:合并两个有序链表
LeetCode初级算法--链表02:合并两个有序链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...
- JS实现数组排序:升序和降序
如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序.即 a 和 b 是两个将要被比较的元素: 如果 compareFunction(a, b) 小于 0 ,那么 a 会 ...
- LintCode:链表操作(合并与反转)
描述: (1)翻转一个链表 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null ********************** ...
- mysql中的升序和降序以及一个字段升序和一个字段降序
mySql中,升序为asc,降序为desc.例如: 升序:select * from 表名 order by 表中的字段 asc(mysql中默认是升序排列,可不写) 降序:select ...
随机推荐
- Apache DolphinScheduler 1.3.6 功能发布说明
参与人员 @chengshiwen.@hailin0.@wanghong1314.@ruanwenjun.@xxjingcd.@zhangguohao.@zhuangchong.@syb8535531 ...
- flutter系列之:flutter架构什么的,看完这篇文章就全懂了
目录 简介 Flutter的架构图 embedder engine Flutter framework Widgets Widgets的可扩展性 Widgets的状态管理 渲染和布局 总结 简介 Fl ...
- 架构与思维:互联网高性能Web架构
1 什么是高性能Web架构 在互联网业务中,我们经常会面临流量巨大的复杂的分布式场景.这就要求我们在设计系统的时候保证系统具有承载高并发(High Concurrency)的能力,同时能够保证系统的高 ...
- KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析
案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...
- mysql_添加修改字段总结
Mysql 添加字段 例子 ALTER TABLE tt_transfer_container_pick_config ADD COLUMN container_pick_station VARCHA ...
- Spark 读Hive并写入HBase
package com.grady import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.c ...
- SQL CASE语句的使用
SQL CASE语句的使用 CASE是一个控制流语句,其作用与IF-THEN-ELSE语句非常相似,可根据数据选择值. CASE语句遍历条件并在满足第一个条件时返回值. 因此,一旦条件成立,它将短路, ...
- C语言输入输出格式符
C语言输入输出格式符 printf函数(格式输出函数) 1.一般格式 printf(格式控制,输出表列) 例如:printf("i=%d,ch=%c\n",i,ch); 说明: ( ...
- 【学习笔记】 第04章 NumPy基础:数组和矢量计算
前言 正式开始学习Numpy,参考用书是<用Python进行数据清洗>,计划本周五之前把本书读完,关键代码全部实现一遍 NumPy基础:数组和矢量计算 按照书中所示,要搞明白具体的性能差距 ...
- 合理编写C++模块(.h、.cc)
模块划分 合理编写模块的 demo.h.demo.cc 下例为C++为后端服务编写的探活检测服务 health_server.h #ifndef HEALTH_SERVER_H #define HEA ...