<分区>
我正在尝试在 C++ 上创建单向链表。我正在使用 3 个函数执行此操作,这些函数基于结构“DiseaseList”创建一个项目,将该项目添加到列表中,然后将其打印出来。
我已经整理这段代码几个小时了,我似乎无法阻止它把这个列表的头部定位到最后一个项目。只有 2 点可以改变头部(其中 head = *),但这一定是对我所写内容的误解,因为我无法弄清楚。
例如,我添加了两个新元素“1”和“2”。它将永远循环输出“2”。请结束我的痛苦:(
#include <iostream>
using namespace std;
typedef struct DiseaseList
{
int a;
struct DiseaseList *Next;
}DList; //Not sure if I needed DList here or should have just used DiseaseList
DList* CreateElement();
void printList(DList*);
DList* AddElement(DList*, DList*);
int main(void)
{
int choose;
DList *Head = NULL, *NewElement;
do {
cout << "1. Add element" << endl;
cout << "2. Print list" << endl;
cout << "3. Exit" << endl;
cin >> choose;
switch (choose)
{
case 1:
NewElement = CreateElement();
Head = AddElement(Head, NewElement);
break;
case 2: printList(Head); break;
case 3: return 0;
}
} while (1);
}
DList* CreateElement() //Creates a new item for the list
{
DList* temp;
cout << "New Number:";
cin >> temp->a;
temp->Next = NULL;
return temp;
}
DList* AddElement(DList *Head, DList *NewElement) //Adds new item from CreateElement to the list
{
if (Head == NULL)
{
NewElement->Next = NULL;
Head = NewElement;
}
else{
DList *temp = Head;
while (temp->Next != NULL)
{
temp = temp->Next;
}
temp->Next = NewElement;
}
return Head;
}
void printList(DList* Head)
{
while (Head != NULL)
{
cout << Head->a << endl;
Head = Head->Next;
}
}