level 4
cxm6686991
楼主
#include <stdio.h>
typedef struct data
{
int num;
struct data *next;
}DATA;
int main(void)
{
DATA *p=NULL,*pNow=NULL,*pLast=NULL,*pNext=NULL,*pT=NULL;
int i,j;
p=pNow=(DATA *)malloc(sizeof(DATA));
for(i=0;i<5;i++)
{
pNow->num=rand()%100;
pLast=(DATA *)malloc(sizeof(DATA));
pNow->next=pLast;
pNow=pNow->next;
}
pNow->next=NULL;
for(pNow=p;pNow->next;pNow=pNow->next)
{
printf("%d\n",pNow->num);
}
printf("下面开始排序:\n");
//这里你开始排序
for(pNow=p;pNow->next;pNow=pNow->next)
{
for(pLast=pNow;pLast->next;pLast=pLast->next)
{
pNext=pLast->next;
if(pLast->num<pNext->num)
{
if(pLast==p)
{
pT=pNext->next;
pLast->next=pT;
pNext->next=pLast;
}
}
}
}
for(pNow=p;pNow->next;pNow=pNow->next)
{
printf("%d\n",pNow->num);
}
system("PAUSE");
return 0;
}
问一个很简单的 单链表排序问题,上面的代码,只是交换第一个和第二个,怎么失去了第二个节点。
2013年11月27日 17点11分
1
typedef struct data
{
int num;
struct data *next;
}DATA;
int main(void)
{
DATA *p=NULL,*pNow=NULL,*pLast=NULL,*pNext=NULL,*pT=NULL;
int i,j;
p=pNow=(DATA *)malloc(sizeof(DATA));
for(i=0;i<5;i++)
{
pNow->num=rand()%100;
pLast=(DATA *)malloc(sizeof(DATA));
pNow->next=pLast;
pNow=pNow->next;
}
pNow->next=NULL;
for(pNow=p;pNow->next;pNow=pNow->next)
{
printf("%d\n",pNow->num);
}
printf("下面开始排序:\n");
//这里你开始排序
for(pNow=p;pNow->next;pNow=pNow->next)
{
for(pLast=pNow;pLast->next;pLast=pLast->next)
{
pNext=pLast->next;
if(pLast->num<pNext->num)
{
if(pLast==p)
{
pT=pNext->next;
pLast->next=pT;
pNext->next=pLast;
}
}
}
}
for(pNow=p;pNow->next;pNow=pNow->next)
{
printf("%d\n",pNow->num);
}
system("PAUSE");
return 0;
}
问一个很简单的 单链表排序问题,上面的代码,只是交换第一个和第二个,怎么失去了第二个节点。