C++ 在列表末尾添加节点
我想在列表的末尾添加一个节点,这段代码可以处理这个问题,但是当我添加第三个节点时,它会删除第一个节点。第二个节点成为第一个节点,第三个节点成为第二个节点。有什么问题C++ 在列表末尾添加节点,c++,pointers,linked-list,nodes,C++,Pointers,Linked List,Nodes,我想在列表的末尾添加一个节点,这段代码可以处理这个问题,但是当我添加第三个节点时,它会删除第一个节点。第二个节点成为第一个节点,第三个节点成为第二个节点。有什么问题 struct Clothes { int item_id; string name_of_clothing; Clothes * next; Clothes * back; }*new_item, *temp, *last, *list; int a
struct Clothes
{
int item_id;
string name_of_clothing;
Clothes * next;
Clothes * back;
}*new_item, *temp, *last, *list;
int add_clothing() {
string name_of_clothing, item_id;
cout << "Enter ID\t: ";
cin >> item_id;
cout << "Enter Name of item\t: ";
cin >> name_of_clothing;
string new_item[2] = { item_id, name_of_clothing};
add_New_item(new_item[0], new_item[1]);
system("PAUSE");
palce_and_order_menu();
return 0;
}
void add_New_item(string item_id, string name_of_clothing)
{
new_item = new Clothes();
new_item->item_id = std::stoi(item_id);
new_item->name_of_clothing = name_of_clothing;
if (temp == NULL)
{
temp = last = new_item;
cout << "\n>Element inserted in empty list\n";
}
else
{
while (temp->next != NULL){
temp = temp->next;
}
last->next = new_item;
new_item->back = last;
last = new_item;
cout << "\n>Element inserted \n";
}
}
struct
{
int item_id;
衣服的字符串名称;
衣服*下一步;
衣服*背;
}*新项目,*临时,*最后,*列表;
int add_服装(){
衣服的字符串名称,项目id;
cout>item\u id;
服装的名称;
字符串new_item[2]={item_id,name_of_clothing};
添加新项目(新项目[0],新项目[1]);
系统(“暂停”);
palce_和_order_菜单();
返回0;
}
void add_New_item(字符串item_id,字符串name_of_衣服)
{
新项目=新衣服();
新建项目->项目id=std::stoi(项目id);
新建衣服->衣服名称=衣服名称;
if(temp==NULL)
{
临时=最后一个=新项目;
cout next!=空){
温度=温度->下一步;
}
最后->下一步=新项目;
新建项目->返回=上次;
最后一项=新项目;
cout我认为插入新节点的一般逻辑应该如下所示:
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_item;
new_item->back = temp;
// last = new_item
cout << "\n>Element inserted \n";
while(临时->下一步!=NULL){
温度=温度->下一步;
}
临时->下一步=新项目;
新建项目->返回=温度;
//最后一项=新项目
cout基于您对我的评论的回复以及关于列表实施的有限信息。我建议如下-
由于您正在跟踪列表的头部(通过temp
)和尾部(通过last
),并且插入操作在末尾完成,因此插入新节点的功能应该如下所示-
void add_New_item(string item_id, string name_of_clothing)
{
new_item = new Clothes();
new_item->item_id = std::stoi(item_id);
new_item->name_of_clothing = name_of_clothing;
new_item->back=NULL;
new_item->next=NULL;
if (temp == NULL)
{
temp = last = new_item;
cout << "\n>Element inserted in empty list\n";
}
else
{
last->next = new_item;
new_item->back = last;
last = new_item;
cout << "\n>Element inserted \n";
}
}
void add\u New\u项目(字符串项目\u id,字符串名称\u服装)
{
新项目=新衣服();
新建项目->项目id=std::stoi(项目id);
新建衣服->衣服名称=衣服名称;
新建项目->返回=空;
新建项目->下一步=空;
if(temp==NULL)
{
临时=最后一个=新项目;
cout next=新项目;
新建项目->返回=上次;
最后一项=新项目;
难道last
指针应该代表什么?列表的开头还是结尾?您的总体逻辑似乎是正确的,但是如果您能够澄清temp
和last
应该做什么,那将是有帮助的。如果temp
指向列表的开头,那么在whi中修改它le
循环和不恢复其以前的值是您丢失列表标题的原因。@GAURANGVYAS是的,它是标题。我如何恢复以前的值?如果这个答案对您有帮助,我们可以重复这个答案。