大家好:)如果我做错了什么,那么请问所有这些新手。 我目前正在做一项任务,而且我已经坚持了很长一段时间。我想要做的是在线性链表中的插入函数(int x,int y)第一次出现元素'x'之后添加一个新元素'y',它使用动态分配内存的节点。 很乐意欣赏任何建议。谢谢您的时间:))
#include <iostream>
using namespace std;
struct node {
int value;
node* next;
};
node* list = NULL;
node* first_item = new node();
void print() {
node* iterator = list;
if (iterator == NULL) {
cout << "EMPTY" << endl;
}
while (iterator != NULL)
{
cout << iterator->value; // print node value
if (iterator->next != NULL) {
cout << " -> ";
}
iterator = iterator->next; // progress to next value
}
cout << endl;
}
void insert(int y) { // adds a new element y as the first element in the list
first_item->value = y;
list = first_item; // point list to first item
}
void insert(int x, int y) { // adds a new element y after the first occurrence of element x
first_item->value = x;
node* second_item = new node(); // a second item
second_item->value = y;
second_item->next = first_item->next;
list->next = second_item;
}
int main()
{
node* list = NULL;
print();
insert(0);
print();
insert(0, 1);
print();
insert(1, 3);
print();
insert(1, 2);
print();
return 0;
}
我得到的错误输出值:
EMPTY
0
0 -> 1
1 -> 3 -> 1
1 -> 2 -> 3 -> 1
我需要的正确价值:
EMPTY
0
0 -> 1
0 -> 1 -> 3
0 -> 1 -> 2 -> 3
答案 0 :(得分:1)
你有设计问题。
首先,删除全局变量:
#include <iostream>
using namespace std;
struct node {
int value;
node* next;
};
node* list = NULL; // This
node* first_item = new node(); // And this
每个函数都应该有一个参数:列表的第一个节点。而已。如果你需要列表的最后一个元素,你应该迭代到最后:
void print(node* list) {
node* iterator = list;
if (iterator == NULL) {
cout << "EMPTY" << endl;
}
while (iterator != NULL)
{
cout << iterator->value; // print node value
if (iterator->next != NULL) {
cout << " -> ";
}
iterator = iterator->next; // progress to next value
}
cout << endl;
}
void insert(node* first_item,int y) { // adds a new element y as the first element in the list
//TODO Implement
}
void insert(int x, int y) { // adds a new element y after the first occurrence of element x
//TODO Implement
}
int main()
{
node* list = NULL;
print(list);
insert(list,0);
print(list);
insert(0, 1);
print(list);
insert(1, 3);
print(list);
insert(1, 2);
print(list);
return 0;
}