Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Двунаправленное кольцо С++ (http://www.tehnari.ru/f41/t106388/)

zena 15.01.2016 19:18

Двунаправленное кольцо С++
 
Такая история. Сдавала в универе работу по классам.
Цитата:

Разработать класс реализующий список (двунаправленное кольцо). Элемент списка содержит информацию о товаре на складе фирмы. Элемент очереди содер-жит наименование товара, цену, количество и дату поставки. В классе реализовать методы поставки на склад, отгрузки со склада и формирования информации по выбранному товару.
Преподу не понравилось решение. Сказал, что это двунаправленная очередь, а ему надо кольцо. Собственно вопрос: как переделать код, что бы было это кольцо(а то что-то в гугле даже про это ничего толкового нету, а решить надо побыстрее).
Код:

#include "stdafx.h"
#include <iostream>
using namespace std;

struct Data{
        Data *Next, *Prev;
        string Name;
        int Price, Count;
        int Day, Month, Year;};
class List{
protected:
        Data *Head, *Tail;
        int Size;
public:
        List()        {
                Head = NULL;
                Tail = NULL;
                Size = 0;        };
        List(Data InputData)        {
                Data *curdata = new Data;
                curdata->Year = InputData.Year;
                curdata->Month = InputData.Month;
                curdata->Day = InputData.Day;
                curdata->Price = InputData.Price;
                curdata->Count = InputData.Count;
                curdata->Name = InputData.Name;
                curdata->Prev = NULL;
                Head = Tail = curdata;
                Size = 1;        };
        List(List &data)
        {
                Head = NULL;
                *this = data;        };
        ~List()        {
                while (Head)                {
                        Tail = Head->Next;
                        delete Head;
                        Head = Tail;                };       
};
        void Show(int No)       
{
                Data *curdata = new Data;
                curdata = Head;
                if (No>Size) exit; else               
{
                        for (inti = 0; i<No - 1; i++)                       
{
                                if (curdata->Next != NULL)
                                        curdata = curdata->Next;                       
};
cout<< "Наименованиетовара:" <<curdata->Name.c_str() <<endl;
cout<< "Количество:" <<curdata->Count << "\t Цена:" <<curdata->Price <<endl;
cout<< "Дата поставки:" <<curdata->Day<< "." <<curdata->Month << "." <<curdata->Year <<endl;};        };
        void Delete(int No)        {
                if (No>Size) exit;
                Size--;
                Data *curdata = new Data;
                curdata = Head;
                for (inti = 0; i<No - 2; i++)
                        curdata = curdata->Next;
                if (curdata->Next->Next == NULL)
                        curdata->Next = NULL;
                else
                        curdata->Next = curdata->Next->Next;       
};
        void Add(Data InputData)        {
                Data *curdata = new Data;
                curdata->Year = InputData.Year;
                curdata->Month = InputData.Month;
                curdata->Day = InputData.Day;
                curdata->Price = InputData.Price;
                curdata->Count = InputData.Count;
                curdata->Name = InputData.Name;
                curdata->Next = NULL;
                Size++;
                if (Head != NULL)                {
                        curdata->Prev = Tail;
                        Tail->Next = curdata;
                        Tail = curdata;                }
                else               
{
                        curdata->Prev = NULL;
                        Head = Tail = curdata;        };};};
int _tmain(intargc, _TCHAR* argv[])
{
        setlocale(LC_ALL, "Russian");
        Data good;
good.Name = "Перфоратор";good.Count = 120;good.Price = 3500000;good.Day = 11;
good.Month = 02;good.Year = 2014;
List Goods(good);
good.Name = "Шуруповрт";        good.Count = 50;good.Price = 1225000;        good.Day = 12;
good.Month = 02;        good.Year = 2014;
        Goods.Add(good);
good.Name = "Дрель";good.Count = 150;        good.Price = 125000;good.Day = 13;
good.Month = 02;        good.Year = 2014;
        Goods.Add(good);
        Goods.Show(1);
        Goods.Show(2);
        Goods.Show(3);
        Goods.Delete(2);
        Goods.Show(1);
        Goods.Show(2);
        system("pause");
        return 0;
}



Часовой пояс GMT +4, время: 08:23.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.