2015-04-21 3 views
0

Я делаю проект, и мне нужно добавить продукты в связанный список. когда я добавляю продукты, он также подсчитывает инициализированное значение как продукт. в моем коде я добавляю продукты «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 
+6

Вы только что спросили нас, как использовать * свой собственный * код? –

+1

Я предполагаю, что это учебный проект, и именно по этой причине вы не используете 'std :: list'? –

+1

Если это назначение класса, спросите своего учителя. Если это ваш собственный код, используйте std :: list (или нечто подобное), а не собственный код. –

ответ

3

Связанный список пуст, если он не содержит узлов. Как правило, вы получаете доступ к связанному списку с помощью указателя на главный узел списка. Если узлов нет, указатель на голове равен NULL, а список пуст.

1

Похоже, вы по какой-то причине написали свой собственный список ссылок, возможно, задание?

Возможно, вы просто можете сделать Product* next, чтобы указать this, когда он пуст. Поэтому, если next == this, то список пуст. В качестве альтернативы, если головной узел списка имеет значение null, список пуст.

В будущем я бы рекомендовал разделить реализацию связанного списка с кодом Product. Вы должны иметь List<Product>, а не Product, являющийся одновременно списком и еще чем-то другим.

Смежные вопросы