动态数列排序如何输出不了结果
动态数列排序怎么输出不了结果?
#include <string.h>
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}LNode,*LinkList;
void insertList(LinkList *list,LinkList q,ElemType e) {
LinkList p;
p = (LinkList)malloc(sizeof(LNode));
p->data = e;
if(!*list) {
*list = p;
p->next = NULL;
}
}
void Sort(LinkList q)
{
LNode *p = q;
int t,i,j,k = 0;
while(p) {k++;p=p->next;}
p = q;
for(i = 0 ; i<k-1 ; i++)
{
for(j = 0 ; j<k-i-1 ; j++)
{
if(p->data>p->next->data)
{
t = p->data;
p->data = p->next->data;
p->next->data = t;
}
p = p->next;
}
p = q;
}
}
void Print(LinkList q)
{
while(q)
{
printf("%d ",q->data);
q = q->next;
}
}
main()
{
ElemType e;
LinkList l,q;
l = NULL;
q = NULL;
scanf("%d",&e);
insertList(&l,q,e);
q = l;
scanf("%d",&e);
while(e)
{
insertList(&l,q,e);
q = q->next;
scanf("%d",&e);
}
Sort(l);
Print(l);
getche();
}
------解决方案--------------------
对于这种问题,自己用debugger跟踪一遍最是有益。
#include <string.h>
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}LNode,*LinkList;
void insertList(LinkList *list,LinkList q,ElemType e) {
LinkList p;
p = (LinkList)malloc(sizeof(LNode));
p->data = e;
if(!*list) {
*list = p;
p->next = NULL;
}
}
void Sort(LinkList q)
{
LNode *p = q;
int t,i,j,k = 0;
while(p) {k++;p=p->next;}
p = q;
for(i = 0 ; i<k-1 ; i++)
{
for(j = 0 ; j<k-i-1 ; j++)
{
if(p->data>p->next->data)
{
t = p->data;
p->data = p->next->data;
p->next->data = t;
}
p = p->next;
}
p = q;
}
}
void Print(LinkList q)
{
while(q)
{
printf("%d ",q->data);
q = q->next;
}
}
main()
{
ElemType e;
LinkList l,q;
l = NULL;
q = NULL;
scanf("%d",&e);
insertList(&l,q,e);
q = l;
scanf("%d",&e);
while(e)
{
insertList(&l,q,e);
q = q->next;
scanf("%d",&e);
}
Sort(l);
Print(l);
getche();
}
------解决方案--------------------
对于这种问题,自己用debugger跟踪一遍最是有益。