动态初始化排序链表


#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);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值