typedef struct node{
unsigned int base_address;
unsigned int limit_offset;
struct node *next;
struct node *previous;
}node;
这是我用来做节点的代码这是循环
void sort_by_id(node *listHead){
while(listHead->next != 0){
node current = *listHead;
node search = current;
node lowest = current;
while(search.next != 0){
if(search.base_address<lowest.base_address){
lowest = search;
}
search = search->next;
}
node temp = lowest;
search = current;
if(current.base_address == listHead->base_address){
lowest.next = search.next;
lowest.previous = search.previous;
search.next = temp.next;
search.previous = temp.previous;
*listHead = lowest;
}else{
lowest.next = search.next;
lowest.previous = search.previous;
search.next = temp.next;
search.previous = temp.previous;
}
current= current->next;
}
}
目前在这种状态下,它给我一个错误,说在行search = search->next;
和current= current->next;
'-〉'是一个无效的参数类型。我是新的c和任何帮助将不胜感激。
我试着将这两行代码分别修改为search = search.next*;
和current= current.next*;
,但是我得到一个错误,告诉我“expected expression before”;所以我不知道该怎么办。
1条答案
按热度按时间mf98qq941#
sort_by_id()
似乎是选择排序,所以只是重新实现了它(你的代码没有编译,因为你把指针和对象混在一起了)。这里唯一有趣的事情是swap()
只处理数据元素,而不处理指针。你可以处理指针而不处理数据元素,但这需要更多的工作(在您正在交换的两个节点中有4个指针,在这两个节点中的每个节点之前/之后的4个节点中有1个指针,总共有8个指针)。我还写了一个
build()
,print()
和一些测试数据来演示它的工作。示例会话: