`
hufeng
  • 浏览: 101251 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

动态初始化排序链表

阅读更多
#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语言)

    线性链表的基本操作; 插入 删除 排序 初始化 判空 销毁 求长度...,都是些基本操作

    c 语言写的一个单链表 支持增、删、改、查、保存... 单链表的神器啊

    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:合并(保留相同项) *...

    Golang中List的实现方法示例详解

    大家都知道基本链表得有以下特性:链表的初始化、链表的长度、节点的插入、删除、查找等一些常见的基本操作,最后写好之后,需要测试。关于测试,我之前写过Go的系列笔记中有叙述,不再重复。 实现 初始化 有语言...

    循环链表基本操作

    输入多个字符,用顺序表保存,实现对表的操作,实现初始化,求表长度,求表中的第i个结点,输入一个字符,查找对应的结点,插入一个结点,删除一个结点,排序

    C语言 工资管理系统 (双链表 单链表)VC上面可以运行

    /*初始化*/ case 1:create();break; /*输入数据创建链表*/ case 2:list();break; /*显示所有数据*/ case 3:calc();break; /*计算实发工资*/ case 4:search();break; /*查找职工信息数据*/ case 5:delete();...

    数据结构实验 排序数基本操作

    (1)初始化一棵二叉树; (2)调用插入函数建立一棵二叉排序树; (3)调用查找函数在二叉树中查找指定的结点; (4)调用删除函数删除指定的结点,并动态显示删除结果。 注:要求动态显示二叉树的建立过程 ...

    双向链表基本操作

    输入多个字符,用顺序表保存,实现对表的操作,实现初始化,求表长度,求表中的第i个结点,输入一个字符,查找对应的结点,插入一个结点,删除一个结点,排序

    2014c语言必做题

    最新、最好、最全的c语言训练题目,可以面面俱到

    学生信息管理系统——基于控制台的C语言链表结构实现

    链表实现学生信息的初始化,插入,删除,排序查询,以及写入文件,从文件导出等基本功能,代码都有详细注释...

    数据结构单链表插入、删除和修改实验报告

    初始化状态:单链表可以不为空集;操作结果:插入一个空的单链表L。  (2)decelt  操作结果:删除已有的单链表的某些结点。 (3)display  操作结果:将上述输入的元素进行排列显示。  (4)modify  操作结果...

    链表的19个基本操作

    1.初始化线性表,即置单链表的表头指针为空 2.创建线性表,此函数输入负数终止读取数据 3.打印链表,链表的遍历 4.清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表 5.返回单链表的长度 6....

    QT实现可拖拽排序的表格

    QT实现可拖拽行排序的表格,研究了一天实现的自定义控件。 效果类似QQ好友分组的拖动排序功能,非常流畅,内含我对表格的常用初始化代码和样式设置。具体内容见博客分类“Qt实用技术”内文章。

    计算机数据点信息管理系统

    使用不带头结点的链表完成此项操作。能够实现的功能有简易菜单界面的实现、初始化链表、销毁链表、查找、排序、修改、插入、追加、打印等功能

    改造一个双向循环链表,使右链域保持原来的顺序,而左链域从小到大顺序排列。

    改进:不需要对每个结点的左链域进行置空初始化,因为最后还是会重新赋值。只需要对头结点 L 初始化: L-&gt;prior = L; 原方法:每次选出最小元素,采用尾插法排序,较为繁琐,而且指针变量太多。新方法:每次选出...

    顺序表,链表,二叉树的各种操作

    1、实现对线性表的顺序存储,并实现顺序表的插入、删除、...2、本程序实现了线性链表的初始化、插入、删除、逆序、排序、合并功能 3、实现二叉树的创建,前中后序遍历,统计叶子数目,求二叉树高度的递归和非递归算法。

Global site tag (gtag.js) - Google Analytics