【发布时间】:2010-11-02 18:22:33
【问题描述】:
我有一个链接列表 c 文件/头作为我用于项目的独立库。我在库中还没有添加有序方法。我的问题是编写一个比较函数,因为我想比较不同项目的不同项目。如何在我的 main 中为我正在使用的任何项目创建一个比较函数,然后将该函数传递并使用到我的链表库中的 add_ordered 方法中?我似乎找不到一个可行的解决方案来传递函数并在我的链接列表中使用它。
这是我的 add_ordered 和 compareto 方法的未编译版本(每个文件的比较方法会有所不同):
void ll_add_ordered(ll_node *head, void *d){
ll_node *cur;
ll_node *temp;
if(head->size == 0){
ll_add_first(head, d);
}else{
temp = (ll_node *)malloc(sizeof(ll_node));
temp->data = d;
for(cur = head->next; cur->data != NULL && compareTo(temp->data, cur->data); cur = cur->next)
;
temp->next = cur;
temp->prev = cur->prev;
cur->prev->next = temp;
cur->prev = temp;
head->size++;
}
}
int compareTo(proc *first, proc *second){
if(first->arrival < second->arrival)
return -1;
else if(first->arrival > second->arrival)
return 1;
else
return 0;
}
【问题讨论】:
标签: c linked-list compare