Я делаю проект, и мне нужно добавить продукты в связанный список. когда я добавляю продукты, он также подсчитывает инициализированное значение как продукт. в моем коде я добавляю продукты «aaaa» с ценой 20 и «bbbb» с ценой 111, когда я печатаю цены на продукцию своей печатью: «0 20 111». значение «0» - это инициализированное значение, и я не хочу его сохранять. Мне нужно выяснить, пустой ли список, и если да, чтобы добавить первый элемент в список. Как мне это сделать?
Это мой код:Как проверить, не связан ли связанный список
main.cpp:
#include <iostream>
//#include <string>
using namespace std;
#include "List.h"
int main(){
int option;
Product productsListHead;
productsListHead.printProducts(&productsListHead);
productsListHead.addProduct(&productsListHead,1,"aaaa",20);
productsListHead.printProducts(&productsListHead);
productsListHead.addProduct(&productsListHead,2,"bbbb",111);
if(option==1){
productsListHead.printProducts(&productsListHead);
}
return 1;
}
List.cpp:
#include <iostream>
#include <string>
#include <cstdlib>
#include "List.h"
using namespace std;
void Product::addProduct(Product* head,int id,char* name, int price){
Product* TheNewProduct = new Product;
TheNewProduct->setNext(NULL);
TheNewProduct->setId(id);
TheNewProduct->setName(name);
TheNewProduct->setPrice(price);
Product *tmp = head;
if (tmp != NULL)
{
cout<<"the list is not empty"<<endl;
// Nodes already present in the list
// Parse to end of list
while (tmp->Next() != NULL) {
tmp = tmp->Next();
}
// Point the last node to the new node
tmp->setNext(TheNewProduct);
}
else
{
cout<<"the list is empty"<<endl;
// First node in the list
head = TheNewProduct;
}
}
void Product::printProducts(Product* head)
{
//Product* tmp=head;
for (; head; head = head->Next())
{
cout << head->Price() << endl;
}
}
Product::Product(){
next=NULL;
id=0;
name="";
price=0;
}
заголовок files-> list.h:
#pragma once
#ifndef LIST_H
#define LIST_H
//#include <string>
using namespace std;
class Product{
private:
int id;
char* name;
int price;
Product* next;
public:
Product();//constructor
//Product* Next(){return next;};
//~Products();
Product* Next() { return next; };
int Id(){return id;};
char* Name(){return name;};
int Price(){return price;};
void setId(int new_id){id=new_id;};
void setPrice(int new_price){price=new_price;};
void setNext(Product* new_next){next=new_next;};
void setName(char* new_name){name=new_name;};
void printProducts(Product* head);
void addProduct(Product* head,int id, char* name, int price);
//void updateNameProduct(int id, char* oldName, char* newName);
};
#endif
Вы только что спросили нас, как использовать * свой собственный * код? –
Я предполагаю, что это учебный проект, и именно по этой причине вы не используете 'std :: list'? –
Если это назначение класса, спросите своего учителя. Если это ваш собственный код, используйте std :: list (или нечто подобное), а не собственный код. –