#include "stdio.h"
#include "stdlib.h"
typedef int DataType;
/*编一C程序,它能读入集合A的一串整数(以-9999为结束标记,-9999不算在内)和集合B的一串整数(以-9999为结束标记),
计算出A与B的交集,并以由小到大的次序输出A与B的交集中的所有整数
(输入整数时,相邻的两个用空格隔开。为A或B输入时,同一个数可能出现多次,而A与B的交集中同一个数不能出现多次)。*/
typedef struct link
{
DataType d;
struct link *next;
}Linklist,*PLink;
void printLink(PLink h)
{
PLink p;
int count=0;
if(h==NULL)return;
p=h->next;
while(p)
{
printf("%-5d",p->d);
if(++count%10==0)printf("\n");
p=p->next;
}
}
//插入排序 输入两个整数集合
void insertData(PLink h,int x)
{
PLink p,pre,q;
pre=h;
p=pre->next;
while(p&&p->d<x)
{
pre=pre->next;
p=pre->next;
}
q=(PLink)malloc(sizeof(Linklist));
q->d=x;
q->next=p;
pre->next=q;
// printLink(h);
// printf("\n");
}
void inputData(PLink *h)
{
int d;
if(*h==NULL)
{
*h=(PLink)malloc(sizeof(Linklist));
(*h)->next=NULL;
}
printf("input a:\n");
do
{
scanf("%d",&d);
if(d==-9999)break;
insertData(*h,d);
}while(9);
printf("input b:\n");
do
{
scanf("%d",&d);
if(d==-9999)break;
insertData(*h,d);
}while(9);
}
//链表有序前提删除重复元素
void deleteReputNode(PLink h)
{
PLink p,f;
f=h;
p=h->next;
while(p&&p->next)
{
if(p->d==p->next->d)
{
f->next=p->next;
free(p);
p=f->next;
continue;
}
f=p;
p=p->next;
}
}
void main()
{
PLink a=NULL;
inputData(&a);
printLink(a);
deleteReputNode(a);
printf("\n");
printLink(a);
}
分享到:
相关推荐
1.编写一个基于链表的归并排序程序。 1)随机生成两个链表,利用随机数进行初始化 2)要求给出链表的结构,链表的初始化等排序中用到的基本操作函数 3)显示相关的输出信息 编程环境:Linux C
这个程序是关于链表的建立,采用尾插法进行排序。
双向链表的操作问题 Time Limit: 1000MS Memory Limit: 10000KB Submissions: 111 Accepted: 41 Description 建立一个长度为n的带头结点的双向链表,使得该链表中的数据元素递增有序排列。(必须使用双向链表完成...
单链表的创建,排序,归并,插入删除定位和获得元素,计算元素个数,打印链表
线性链表的基本操作; 插入 删除 排序 初始化 判空 销毁 求长度...,都是些基本操作
c 语言写的一个单链表 支持增、删、改、查、保存... printf("6: 链表排序1\n"); printf("7: 链表排序2\n"); printf("8: 链表逆序\n"); printf("9: 销毁链表\n"); printf("0: 退出\n"); printf("w: 信息存储\n")
printf(" * E:插入元素(La) F:排序(有小及大)(La) *\n"); printf(" * *\n"); printf(" * G:就地逆置(La) H:删除x-y的元素(La) *\n"); printf(" * *\n"); printf(" * I:合并(删除相同项) J:合并(保留相同项) *...
大家都知道基本链表得有以下特性:链表的初始化、链表的长度、节点的插入、删除、查找等一些常见的基本操作,最后写好之后,需要测试。关于测试,我之前写过Go的系列笔记中有叙述,不再重复。 实现 初始化 有语言...
输入多个字符,用顺序表保存,实现对表的操作,实现初始化,求表长度,求表中的第i个结点,输入一个字符,查找对应的结点,插入一个结点,删除一个结点,排序
/*初始化*/ case 1:create();break; /*输入数据创建链表*/ case 2:list();break; /*显示所有数据*/ case 3:calc();break; /*计算实发工资*/ case 4:search();break; /*查找职工信息数据*/ case 5:delete();...
(1)初始化一棵二叉树; (2)调用插入函数建立一棵二叉排序树; (3)调用查找函数在二叉树中查找指定的结点; (4)调用删除函数删除指定的结点,并动态显示删除结果。 注:要求动态显示二叉树的建立过程 ...
输入多个字符,用顺序表保存,实现对表的操作,实现初始化,求表长度,求表中的第i个结点,输入一个字符,查找对应的结点,插入一个结点,删除一个结点,排序
最新、最好、最全的c语言训练题目,可以面面俱到
链表实现学生信息的初始化,插入,删除,排序查询,以及写入文件,从文件导出等基本功能,代码都有详细注释...
初始化状态:单链表可以不为空集;操作结果:插入一个空的单链表L。 (2)decelt 操作结果:删除已有的单链表的某些结点。 (3)display 操作结果:将上述输入的元素进行排列显示。 (4)modify 操作结果...
1.初始化线性表,即置单链表的表头指针为空 2.创建线性表,此函数输入负数终止读取数据 3.打印链表,链表的遍历 4.清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表 5.返回单链表的长度 6....
QT实现可拖拽行排序的表格,研究了一天实现的自定义控件。 效果类似QQ好友分组的拖动排序功能,非常流畅,内含我对表格的常用初始化代码和样式设置。具体内容见博客分类“Qt实用技术”内文章。
使用不带头结点的链表完成此项操作。能够实现的功能有简易菜单界面的实现、初始化链表、销毁链表、查找、排序、修改、插入、追加、打印等功能
改进:不需要对每个结点的左链域进行置空初始化,因为最后还是会重新赋值。只需要对头结点 L 初始化: L->prior = L; 原方法:每次选出最小元素,采用尾插法排序,较为繁琐,而且指针变量太多。新方法:每次选出...
1、实现对线性表的顺序存储,并实现顺序表的插入、删除、...2、本程序实现了线性链表的初始化、插入、删除、逆序、排序、合并功能 3、实现二叉树的创建,前中后序遍历,统计叶子数目,求二叉树高度的递归和非递归算法。