YTU OJ 2210: 链表排列(线性表)

题目描述

(线性表)已知不带头结点的线性链表list,链表中结点构造为(data、link),其中data为数据域,link为指针域。请写一算法,将该链表按结点数据域的值的大小从小到大重新链接。要求链接过程中不得使用除该链表以外的任何链结点空间。

输入

m=5
3 1 5 4 6

输出

1 3 4 5 6

样例输入
m=8
10 1 5 14 32 55 67 6

样例输出
1 5 6 10 14 32 55 67

采用C++方式提交

#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode
{
	int data;
	struct Lnode *next;
}LinkNode;
void Creat(LinkNode *&L,int n)
{
	LinkNode *p,*r;
	int i;
	L=(LinkNode *)malloc(sizeof(LinkNode));
	r=L;
	for(i=0;i<n;i++)
	{
		p=(LinkNode *)malloc(sizeof(LinkNode));
		scanf("%d",&p->data);
		r->next=p;
		r=p;
	}
	r->next=NULL;
}
void sort(LinkNode *&L)
{
	LinkNode *p,*q;
	int t;
	for(p=L;p!=NULL;p=p->next)
	{
		for(q=p->next;q!=NULL;q=q->next)
		{
			if(p->data > q->data)
			{
				t=p->data;
				p->data=q->data;
				q->data=t;
			}
		}
	}
}
void Print(LinkNode *L)
{
	while(L!=NULL)
	{
		printf("%d ",L->data);
		L=L->next;
	}
	printf("\n");
}
int main()
{
	int m;
	LinkNode *head;
	scanf("m=%d",&m);
	Creat(head,m);
	sort(head->next);
	Print(head->next);
	sreturn 0;
}

你可能感兴趣的:(YTU OJ 2210: 链表排列(线性表))