Responsive image

问题 2938 --设计一个算法实现所有数据结点按data域递增排序(单链表)

2938: 设计一个算法实现所有数据结点按data域递增排序(单链表)

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 3
[提交][状态][讨论版][命题人:]

题目描述

有一个带头结点的单链表L(至少有一个数据结点),设计一个算法实现所有数据结点按data域递增排序。
组合提交代码(仅支持c++)
#include<iostream>
#include <stdio.h>
#include <malloc.h>
using namespace std;
typedef int ElemType;
typedef struct LNode  
{
ElemType data;
struct LNode *next; //指向后继结点
} linkNode; //声明单链表结点类型

void InitList(linkNode *&L)
{
L=(linkNode *)malloc(sizeof(linkNode));  //创建头结点
L->next=NULL;
}
void DestroyList(linkNode *&L)
{
linkNode *pre=L,*p=pre->next;
while (p!=NULL)
{ free(pre);
pre=p;
p=pre->next;
}
free(pre); //此时p为NULL,pre指向尾结点,释放它
}
void DispList(linkNode *L)
{
linkNode *p=L->next;
while (p!=NULL)
{ printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void CreateListR(linkNode *&L,ElemType a[],int n)
//尾插法建立单链表
{
linkNode *s,*r;
L=(linkNode *)malloc(sizeof(linkNode));  //创建头结点
L->next=NULL;
r=L; //r始终指向终端结点,开始时指向头结点
for (int i=0;i<n;i++)
{
s=(linkNode *)malloc(sizeof(linkNode));//创建新结点s
s->data=a[i];
r->next=s; //将结点s插入结点r之后
r=s;
}
r->next=NULL; //终端结点next域置为NULL
}
void sort(linkNode *&L)
{/**************begin************/

/**************end************/
}
int main()
{
linkNode *L;
int n=10;
ElemType a[]={1,3,2,9,0,4,7,6,5,8};
CreateListR(L,a,n);
printf("L:");DispList(L);
printf("排序\n");
sort(L);
printf("L:");DispList(L);
DestroyList(L);
return 1;
}


提示

组合提交代码,仅需要提交函数定义,不要把所有的都提交了

你应该提交

void sort(linkNode *&L)

{/**************begin************/



/**************end************/

}


来源

 

[提交][状态]
ACM算法攻关部