单链表实现递增有序交集
来源:互联网 发布:广联达市政预算软件 编辑:程序博客网 时间:2024/06/07 06:36
#include <stdio.h>
#include <stdlib.h>
#define OK 1
typedef int status;
typedef int ElemType;
typedef struct Node{
ElemType data;
struct Node *next;
}LNode,*LinkList;
void creat(LinkList L);
void IntersectionList1(LinkList L);
void Insert(LinkList L,LinkList p);
status Sort(LinkList L);
//void Print(LinkList L);
int main() {
LinkList La;
La=(LinkList)malloc(sizeof(LNode));
La->next=NULL;
La->data=-1;
creat(La);
Sort(La);
printf("交集为:\n");
IntersectionList1(La);
printf("\n");
return 0;
}
//创建一个新的链表
void creat(LinkList L){
int n1,n2;
LinkList p,q;
p=L;
printf("请输入A集合元素的个数:\n");
scanf("%d",&n1);
printf("请输入A集合元素:\n");
while(n1--) {
q=(LinkList)malloc(sizeof(LNode));
scanf("%d",&q->data);
q->next=NULL;
p->next=q;
p=q;
}
getchar();
printf("请输入B集合元素的个数:\n");
scanf("%d",&n2);
printf("请输入B集合元素:\n");
while(n2--) {
q=(LinkList)malloc(sizeof(LNode));
scanf("%d",&q->data);
q->next=NULL;
p->next=q;
p=q;
}
}
//提取链表中的重复元素
void IntersectionList1(LinkList L)
{
LinkList p,q,s;
p=L;
q=L->next;
while(q->next)
{
if(q->data==q->next->data)
{
printf("%d ",q->data);
p->next=q->next;
s=q;
q=q->next;
free(s);
}
else
{
p=p->next;
q=q->next;
}
}
}
//升序排列
void Insert(LinkList L,LinkList p)
{
LinkList s;
s=L;
while(s->next && s->next->data < p->data)
s=s->next;
p->next=s->next;
s->next=p;
}
status Sort(LinkList L){
LinkList s,r;
s=L->next;
L->next=NULL;
while(s){
r=s;
s=s->next;
r->next=NULL;
Insert(L,r);
}
return OK;
}
/*void Print(LinkList L)
{
LinkList p;
p=L->next;
printf("交集为:\n");
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}*/
#include <stdlib.h>
#define OK 1
typedef int status;
typedef int ElemType;
typedef struct Node{
ElemType data;
struct Node *next;
}LNode,*LinkList;
void creat(LinkList L);
void IntersectionList1(LinkList L);
void Insert(LinkList L,LinkList p);
status Sort(LinkList L);
//void Print(LinkList L);
int main() {
LinkList La;
La=(LinkList)malloc(sizeof(LNode));
La->next=NULL;
La->data=-1;
creat(La);
Sort(La);
printf("交集为:\n");
IntersectionList1(La);
printf("\n");
return 0;
}
//创建一个新的链表
void creat(LinkList L){
int n1,n2;
LinkList p,q;
p=L;
printf("请输入A集合元素的个数:\n");
scanf("%d",&n1);
printf("请输入A集合元素:\n");
while(n1--) {
q=(LinkList)malloc(sizeof(LNode));
scanf("%d",&q->data);
q->next=NULL;
p->next=q;
p=q;
}
getchar();
printf("请输入B集合元素的个数:\n");
scanf("%d",&n2);
printf("请输入B集合元素:\n");
while(n2--) {
q=(LinkList)malloc(sizeof(LNode));
scanf("%d",&q->data);
q->next=NULL;
p->next=q;
p=q;
}
}
//提取链表中的重复元素
void IntersectionList1(LinkList L)
{
LinkList p,q,s;
p=L;
q=L->next;
while(q->next)
{
if(q->data==q->next->data)
{
printf("%d ",q->data);
p->next=q->next;
s=q;
q=q->next;
free(s);
}
else
{
p=p->next;
q=q->next;
}
}
}
//升序排列
void Insert(LinkList L,LinkList p)
{
LinkList s;
s=L;
while(s->next && s->next->data < p->data)
s=s->next;
p->next=s->next;
s->next=p;
}
status Sort(LinkList L){
LinkList s,r;
s=L->next;
L->next=NULL;
while(s){
r=s;
s=s->next;
r->next=NULL;
Insert(L,r);
}
return OK;
}
/*void Print(LinkList L)
{
LinkList p;
p=L->next;
printf("交集为:\n");
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}*/
0 0
- 单链表实现递增有序交集
- 递增有序的顺序表表示集合,求解两个集合的交集 并集 差集(c语言实现)
- 单链表编写递增有序并集(c语言实现)
- 两个有序数组交集与并集的实现
- 有序数组求交集
- 有序集合求交集
- 有序链表交集
- 随机化算法-用数组实现有序递增链表
- 递增链表的交集
- 将两个递增的有序链表合并为一个递增的有序链表(C语言编程实现)
- 头结点有序递增
- 两有序数组的交集
- 两个有序数组求交集
- 有序链表的交集
- 数据结构杂记——两个递增有序的单链表合并
- PAT 2-12 两个有序链表序列的交集(C语言实现)
- 数据结构 — 1. 两个非递减有序单链表合并为非递增有序单链表
- 数据结构题典010:有序单链表的交集(ANSI C)
- maven打包成jar, 包括依赖其他的jar
- web安全之跨站请求伪造攻击(CSRF)与防范方法
- 代码混淆时,不要在bean中写其他方法
- Windows命令行bat批处理延迟sleep方法
- Unity3D自学笔记——脚本开发基础数学
- 单链表实现递增有序交集
- 使用 Symfony2 的组件创建自己的 PHP 框架
- 数据结构(1)-基本概念和术语
- ParseNet论文解读
- 安卓全局修改TextView字体样式
- iOS的app上架--苹果加急审核
- web前端-HTML表格-011
- 微机原理--第二章(8)Pentium 的中断
- 杭电2033 人见人爱A+B