有一个带头结点的单链表L(至少有一个数据结点),设计一个算法使其元素递增有序排列。

编程要求 根据提示,在右侧编辑器补充代码,完成函数void sort_list(LinkNode *&L),该函数功能是对带头结点的单链表L进行插入排序,使其递增有序。

测试说明 平台会对你编写的代码进行测试:

输入格式 输入包括两行。 第一行为一个整数n。 第二行为空格隔开的n个整数。

输出格式 输出包括两行。 第一行为排序之前的单链表。每个数据后一个空格。 第二行为递增排序之后的单链表。每个数据后一个空格。

样例输入 10 1 3 2 9 0 4 7 6 5 8

样例输出 L: 1 3 2 9 0 4 7 6 5 8 L: 0 1 2 3 4 5 6 7 8 9

#include "linklist.h"

/**
 * 单链表L递增(插入)排序
 */
void sort_list(LinkNode *&L)
{
	//请在下面编写代码
	/******************Begin******************/
    int j=0;
    
    LinkNode * p=L,*s;
    if (i<=0) return false;
    while (j<i-1 && p!=NULL)
    {   j++;
        p=p->next;
    }
    if (p==NULL)
         return false;
    else
    {
        s=(LinkNode *)malloc(sizeof(LinkNode));
        s->data=e;
        s->next=p->next;
        p->next=s;
        return true;
    }


	/*******************End*******************/
}

int main()
{
	LinkNode *L;
	// int n = 10;
	// ElemType a[] = {1, 3, 2, 9, 0, 4, 7, 6, 5, 8};
	int n;
	scanf("%d", &n);
	int *a = (int*)malloc(sizeof(int) * n);
	for (int i = 0; i < n; i++)
		scanf("%d", &a[i]);
	CreateListR(L, a, n);		//创建单链表
	printf("L: "); DispList(L);	//输出单链表
	sort_list(L);				//单链表递增排序
	printf("L: "); DispList(L);	//输出排序后的单链表
	DestroyList(L);				//销毁单链表
	free(a);					//释放数组
	return 0;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值