题目
答案
List Insert( List L, ElementType X )
{
PtrToNode head,p,temp;
head=(PtrToNode)malloc(sizeof(struct Node));
head->Next=L;
p=head->Next;
while(p->Next)
{
if(p->Next->Data<=X) p=p->Next;
else
{
temp=(PtrToNode)malloc(sizeof(struct Node));
temp->Data=X;
temp->Next=p->Next;
p->Next=temp;
return head->Next;
}
}
temp=(PtrToNode)malloc(sizeof(struct Node));
temp->Data=X;
temp->Next=NULL;
p->Next=temp;
return head->Next;
}
问题总结
- 在循环最后如果找不到比X大的data值,就要在最后插入temp
- 因为原列表带有头结点,所以我这个在链表前加上头结点head的做法就要改一下,p不能指向head,而是指向head的下一个位置,这样
p->Next->Data
才是存在的。相关代码如下:
head=(PtrToNode)malloc(sizeof(struct Node));
head->Next=L;
p=head->Next;