我创建了一个单链表,它运行得很好,直到我将“基本”数据结构从单个int值更改为各种变量。
当我尝试存储从temp节点上的参数获取的数据时,insertAtEnd函数中会发生错误。
temp->nome = n;
temp->morada = m;
temp->telefone = t;
temp->idade = i;
int值显示没有错误,但char []得到错误“E0137 - 表达式必须是可修改的左值”。
List.h
struct node
{
char nome[20];
char morada[30];
char telefone[9];
Int idade;
node *next;
};
class LinkedList
{
private:
node *head;
node *tail;
public:
LinkedList();
~LinkedList();
void insertAtEnd(char n[20], char m[30], char t[9], int i);
void insertAtStart(char n[20], char m[30], char t[9], int i);
void display(void);
void deleteFirst(void);
void deleteLast(void);
void deleteAtPosition(int pos);
};
List.cpp
(...)
LinkedList::LinkedList()
{
head = NULL;
tail = NULL;
}
void LinkedList::insertAtEnd(char n[20], char m[30], char t[9], int i)
{
node *temp = new node;
temp->nome = n;
temp->morada = m;
temp->telefone = t;
temp->idade = i;
temp->next = NULL;
if (head == NULL)
{
head = temp;
tail = temp;
temp = NULL;
}
else
{
tail->next = temp;
tail = temp;
}
}
(...)
Main.cpp的
(...)
LinkedList lista;
char nome[20];
char morada[30];
char telefone[9];
int idade;
(...)
switch (op) {
case 1:
cout << "Inserir nome: ";
cin >> nome;
cout << "Inserir morada: ";
cin >> morada;
cout << "Inserir telefone: ";
cin >> telefone;
cout << "Inserir idade: ";
cin >> idade;
lista.insertAtEnd(nome, morada, telefone, idade);
break;
(...)
这些是我项目中的一些代码块,我认为是相关的,我几乎可以肯定没有其他内容可以解决这个问题,但如果你这么认为,请评论,我会编辑它。
提前致谢。
您的代码生成以下错误:在成员函数'void LinkedList :: insertAtEnd(char *,char *,char *,int)':error:将'char *'赋值给'char [20]'时出现不兼容的类型。您必须将函数参数中的每个值复制到节点(我的意思是对数组中的每个值执行temp-> nome [0] = n [0])。您可以更改节点结构以使用指针而不是数组,这将变得更容易。如果您想了解更多信息,请查看以下链接:
https://www.tutorialspoint.com/cplusplus/cpp_passing_arrays_to_functions.htm