【发布时间】:2014-12-04 22:18:27
【问题描述】:
嘿,我需要以排序的方式将一个元素插入到链表中。每个元素都有 isbn ,我需要对链表进行排序。它之所以有效,是因为它在头部插入了最小的元素,但就是这样,其余的似乎是以随机方式排序的。 这是我的代码
void insertABook(linkedlist *root, linkedlist *newbook)
{
if ((root==NULL) && (root->ptr==NULL))
{
root->ptr=newbook;
}
else
{
linkedlist *next = root;
while((next->ptr != NULL) && (next->isbn < newbook->isbn))
{
next = next->ptr;
}
newbook->ptr=next->ptr;
next->ptr=newbook;
}
}
root 参数是虚拟节点(NULL),newbook 参数是要插入的新元素。我用这个方法一个一个的添加元素。
【问题讨论】:
-
在
(next->isbn < newbook->isbn)中,您不是比较 ISBN,而是比较字符串指针。使用(strcmp(next->isbn, newbook->isbn) < 0)。我知道 ISBN 是字符串而不是数字,因为最后一个字符可以是 X。 -
没关系我找到了解决方案,问题是我正在比较 next->isbn 编号而不是 next->ptr->isbn
-
if ((root==NULL) && (root->ptr==NULL))-->if ((root!=NULL) && (root->ptr==NULL))??
标签: c sorting insert linked-list