我对c++非常陌生,所以有时很难理解语法。无论如何,我应该实现一个函数,将数据添加和排序到一个链表中。例如,如果我将2传入列表[1,4,5],那么我应该得到[1,2,4,5]
这是我到目前为止所写的,不,它不工作,我一直得到"blah blah not declare in this scope"
void addSorted(Data * ){
temp = 0;
if (head == NULL) {
head = new LinkNode(newData);
}
else {
LinkNode * current = head;
while (current->next != NULL) {
current = current->next;
}
if(current->data > current->next->data){
temp = current->data;
current->data = current->next->data;
current->next->data = temp;
}
current->next = new LinkNode(newData);
}
}
有人请帮助我,我正在使用结构体LinkNode我认为这是已经给出的,除了一堆其他功能,如添加,插入,删除,获取和大小
我不只是想得到答案,我需要知道为什么我所拥有的不起作用
希望你真的把你的努力..我张贴了整个函数插入数据到列表排序的顺序,我已经写了很长时间了
void addData(node * head, int data){
if(head == NULL) { // First node
node * temp = new node;
temp -> data = data;
temp -> next = NULL;
head = temp;
root = head;
}else{
node * prev = NULL;
while(head -> next != NULL){ // Sorted Addition Logic is HERE
if(data >= head -> data){
prev = head;
head = head -> next;
continue;
}else{
node * temp = new node;
temp -> data = data;
temp -> next = head;
if(prev != NULL)
prev -> next = temp;
else
head = temp;
break;
}
}
if(head -> next == NULL){
node * temp = new node;
temp -> data = data;
head -> next = temp;
temp -> next = NULL;
}
}
}
看到你的代码,似乎你的逻辑本身是错误的…您总是在最后一个节点(while循环)上结束,并且在下一个if语句中,您试图比较下一个不存在的节点的数据