C语言——有序链表

题目:建立一个带有头结点的单项链表,链表中的各个结点按照结点数据域中的数据递增有序连接。函数fun功能:把形参x的值放入一个新结点并插入到链表中,插入后各个结点数据域仍保持递增有序。

代码:

#include<stdio.h>
#include<stdlib.h>

#define N 8
typedef struct list
{
	int data;
	struct list *next;
 }SLIST;
 
 void fun(SLIST *h,int x)
 {
 	SLIST *p,*q,*s;
 	s=(SLIST *)malloc(sizeof(SLIST));
 	s->data=x;
 	q=h;
 	p=h->next;
 	while(p!=NULL&&x>p->data)
 	{
 		q=p;
 		p=p->next;
	 }
	 s->next=p;
	 q->next=s;
  } 
  
  SLIST *creatlist(int *a)
  {
  	SLIST *h,*p,*q;
  	int i;
  	h=p=(SLIST*)malloc(sizeof(SLIST));
  	for(i=0;i<N;i++)
  	{
  		q=(SLIST*)malloc(sizeof(SLIST));
  		q->data=a[i];
  		
  		p->next=q;
  		p=q; 		
	}
	p->next=0;
	return h;	
  }
  
  void outlist(SLIST *h)
  {
  	SLIST *p;
  	p=h->next;
  	if(p==NULL)
  	printf("\nThe list is NULL\n");
  	else
  	{
  		printf("\nHead");
  		do{
  			printf("->%d",p->data);
  			p=p->next;
		  }while(p!=NULL);
		  printf("->End\n");
	  }
  }
  
  int main()
  {
  	SLIST *head;
  	int x;
  	int Inta[N]={12,15,18,19,22,25,29};
  	head=creatlist(Inta);
  	printf("\nThe list before inserting:\n");
  	outlist(head);
  	printf("\nEnter a number: ");
  	scanf("%d",&x);
  	fun(head,x);
  	printf("\nThe list after inserting:\n");
  	outlist(head); 
  }

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值