在有序链表中插入一个数,使其仍然有序(C语言)

#include<stdio.h>
#include<stdlib.h>
typedef struct node{
	int data;
	struct node *next;
}linklist;

linklist *createList(){
	linklist *head,*p,*q;
    int x;
	scanf("%d",&x);
	p=(linklist *)malloc(sizeof(linklist));
	p->data=x;
	head=p;
	scanf("%d",&x);
	while (x!=-1){
		q=(linklist *)malloc(sizeof(linklist));
		q->data=x;
		p->next=q;
		p=q;
		scanf("%d",&x);
	}
	p->next=NULL;
	return head;
}

linklist *insertList(int n,linklist *head){
	linklist *p,*q,*s;
	s=(linklist *)malloc(sizeof(linklist));
	s->data=n;s->next=NULL;
    if (head==NULL) return p;
	p=q=head;
	while (q!=NULL && q->data < n){
		p=q;q=q->next;
	}
	if (p==head){
		s->next=p;head=s;//在头部插入
	}
	else{
	    s->next=q;p->next=s;
	}
	return head;
}
void printList(linklist *head){
	linklist *t;
	t=head;
	if (t==NULL)
		printf("这是一个空列表\n");
	while (t!=NULL){
		printf("%d ",t->data);
		t=t->next;
	}
	printf("\n");
}
int main()
{
    linklist *head;
	int n;
	printf("请输入一组递增数,以-1结束\n");
	head=createList();
	printList(head);
	printf("请输入要插入的数\n");
	scanf("%d",&n);
	head=insertList(n,head);
	printList(head);

	system("pause");
	return 0;
}

 

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值