gpt4 book ai didi

c++ - 实现在单向链表(addsort)中添加和排序数据的函数?

转载 作者:行者123 更新时间:2023-11-28 08:16:37 29 4
gpt4 key购买 nike

我是 C++ 的新手,所以有时理解语法有点困难。无论如何,我应该实现一个函数,将给定的数据添加并排序到链表中。例如,如果我将 2 传递到列表 [1,4,5] 中,那么我应该得到 [1,2,4,5]

这是我到目前为止所写的,不,它不起作用,我不断收到“blah blah not declared 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 语句中结束,你试图比较下一个不存在的节点的数据

关于c++ - 实现在单向链表(addsort)中添加和排序数据的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540554/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com