主题:[讨论]问题????急
[em1]
Status CreatDescend(LinkList &L,int n)
{ // 按非升序建立n个元素的线性表
int j;
LinkList p,q,s;
if(n<=0)
return ERROR;
InitList(L);
printf("请输入%d个元素:\n",n);
s=(LinkList)malloc(sizeof(LNode)); // 第一个结点
scanf("%d",&s->data);
s->next=NULL;
L->next=s;
for(j=1;j<n;j++)
{
s=(LinkList)malloc(sizeof(LNode)); // 其余结点
scanf("%d",&s->data);
q=L;
p=L->next;
while(p&&p->data>s->data) // p没到表尾,且所指元素值大于新值
{
q=p;
p=p->next; // 指针后移
}
s->next=q->next; // 元素插在q的后面
q->next=s;
}
return OK;
}
这段代码尤其是以下部分:
while(p&&p->data>s->data) // p没到表尾,且所指元素值大于新值
{
q=p;
p=p->next; // 指针后移
}
当他建好第一个接点时,在建第二个接点,那么p向后无法移动,因为第二个接点和第一个接点没连起来.这是不是问题呢?请教???
Status CreatDescend(LinkList &L,int n)
{ // 按非升序建立n个元素的线性表
int j;
LinkList p,q,s;
if(n<=0)
return ERROR;
InitList(L);
printf("请输入%d个元素:\n",n);
s=(LinkList)malloc(sizeof(LNode)); // 第一个结点
scanf("%d",&s->data);
s->next=NULL;
L->next=s;
for(j=1;j<n;j++)
{
s=(LinkList)malloc(sizeof(LNode)); // 其余结点
scanf("%d",&s->data);
q=L;
p=L->next;
while(p&&p->data>s->data) // p没到表尾,且所指元素值大于新值
{
q=p;
p=p->next; // 指针后移
}
s->next=q->next; // 元素插在q的后面
q->next=s;
}
return OK;
}
这段代码尤其是以下部分:
while(p&&p->data>s->data) // p没到表尾,且所指元素值大于新值
{
q=p;
p=p->next; // 指针后移
}
当他建好第一个接点时,在建第二个接点,那么p向后无法移动,因为第二个接点和第一个接点没连起来.这是不是问题呢?请教???