Программа должна выполнять следующие инструкции, но я думаю, что у меня есть некоторые проблемы
/*
* Программа на языке C++ для реализации двусвязного списка
*/
#include<iostream>
#включить<cstdio>
#включить<cstdlib>
/*
* Объявление Узла
*/
использование пространства имен std;
структурный узел
{
int info;
структурный узел *далее;
struct node *prev;
}*начало;
/*
объявление класса
*/
класс double_llist
{
общественный:
void create_list(int value);
пустота Insert_beginning(int значение );
void Insert_End(int value);
void Insert_Afterx(int value, int position);
void Remove_Afterx(int value);
пустота Remove_end(int значение );
пустота Remov_beginning(int значение );
пустота search_element(int значение );
пустота display_dlist();
поиск пустоты();
double_llist()
{
start = NULL;
}
};
/*
* Главная: Меню Следует
*/
тап_п()
{
int choice, element, position,i=0;
double_llist дл ;
а (1)
{
соиь<<епси&ЛТ;&ЛТ;"----------------------------"&ЛТ;<епси;
cout<<endl<<"operations="" on="" Double="" linked="" list"<<endl;
="" соиь<<епси&ЛТ;&ЛТ;"----------------------------"&ЛТ;<епси=""
="" соиь<&ЛТ;"1.создать="" узел:"на<<епси;
="" соиь<&ЛТ;"2.вставка="" на="" товар="" на="" начало:"в<<епси;
="" соиь<&ЛТ;"3.вставка="" конец:"на<<епси;
="" соиь<&ЛТ;"4.вставка="" после="" значение="" Х:"на<<епси;
="" соиь<&ЛТ;"5.удалить="" от="" начала:"в<<епси;
="" соиь<&ЛТ;"6.удалить="" соиь<&ЛТ;"7.удалить="" полех:"на<<епси;
="" соиь<&ЛТ;"8.поиск="" Для="" в="" товар"на<<епси;
="" соиь<&ЛТ;"9.дисплей="" все="" элементы"на<<епси;
="" соиь<&ЛТ;"10.выход"на<<епси;
="" cout<<"enter="" your="" choice="": ="" ";
="" cin="">>выбор;
переключатель ( выбор )
{
корпус 1:
cout<<"введите элемент: ";
cin>>элемент;
dl.create_list(элемент);
cout<<endl;
перерыв;
="" дело="" 2:
="" cout<<"enter="" the="" элемент:="" ";
="" cin="">>элемент;
дл.Insert_beginning(элемент);
cout<<endl;
перерыв;
=""
="" дело="" 3:
="" cout<<"enter="" the="" элемент:="" ";
="" cin="">>элемент;
дл.Insert_End(элемент);
cout<<endl;
перерыв;
=""
="" дело="" 4:
="" cout<<"enter="" the="" элемент:="" ";
="" cin="">>элемент;
cout<<"вставить элемент После позиции: ";
cin>>позиция;
дл.Insert_Afterx(элемент, позиция);
cout<<endl;
перерыв;
=""
="" дело="" 5:
="" if="" (start="=" null)
= "" {="cout<<"list="" empty,nothing="" to=" delete"<<endl;="" }
="" dl.remov_beginning(элемент);
="" cout<<endl;="" 6:
="" dl.remove_end(элемент);
="" 7:
="" cout<<"enter="" the="" element="" for="" deletion:="" ";
="" cin="">>элемент;
dl.Remove_Afterx(элемент);
cout<<endl;
перерыв;
="" дело="" 9:
=""
="" dl.display_dlist();
="" cout<<endl;
="" 10:
="" выход(1);
="" по умолчанию:
="" cout<<"wrong="" choice"<<endl;
="" 8:
="" if="" (start="=" null)
= "" {="cout<<"list="" empty,nothing=" " to=" search"<<endl;="" } = "" else{
="" cout<<"\nitem="" found=" " in="" location:"<<i+1<<endl;
="" перерыв;}
="" dl.search();
="" }
="" return="" 0;
}
="" *
="" *="" создать="" двойной="" ссылке="" список
=""
пустота="" double_llist::create_list(инт="" стоимости)
{
="" структуры="" узел="" с,="" *темп;
="" темп="новый(структура" узла);="" временные=""&ГТ;информация = ценность;
temp->next = NULL;
if (start == NULL)
{
temp->prev = NULL;
start = temp;
}
еще
{
s = старт;
while (s->next != NULL)
s = s->Далее;
s->next = temp;
temp->prev = s;
}
}
/*
* Вставка в самом начале
*/
пустота double_llist::Insert_beginning(int значение )
{
if (start == NULL)
{
cout<<"сначала создайте список."<<endl;
вернуть;
="" }
="" структуры="" узел="" *темп;
="" темп="новый(структура" узла);
="" temp-="">prev = NULL;
temp->info = значение;
temp->next = start;
start->prev = temp;
start = temp;
cout<<"элемент вставлен"<<endl;
}
="" *
="" *="" вставка=" " из="" элемент="" at="" Ате="" конец
="" пустоты="" double_llist::insert_end(инт="" стоимости)
{="" if="" (start="=" null)
="" {
="" cout<<"first="" create="" the="" list. " <<endl;
="" вернуть;}
="" структуры="" узел="" *ТМП="" *м;
="" временная="новый(структура" узла);
="" временные=""&ГТ;информация = ценность;
if (q->next == NULL)
{
q->next = tmp;
tmp->next = NULL;
tmp->prev = q;
}
еще
{
ТМП-&ГТ;следующий = г-&ГТ;далее;
ТМП-и GT;далее-&ГТ;пред = ТМП;
q->next = tmp;
tmp->prev = q;
}
cout<<"элемент вставлен"<<endl;
вернуть;
}
*
="" *="" вставка=" " из="" элемента=" " В=" " а="" конкретной="" позиции
=""
пустота="" double_llist::insert_afterx(инт="" значение,="" интервал="" пос)
{
="" if="" (start="=" null)
="" {
="" cout<<"first="" create="" the="" list. " <<endl;
="" вернуть;
="" }
="" структуры="" узел="" *ТМП="" *м;
="" я;
="" q="старт;
"for="" (i="0;i" <="" pos="" - = "" 1;i++)
="">Далее;
if (q == NULL)
{
cout<<"их меньше, чем ";
cout<<pos<<" элементы".<<endl;
="" вернуть;
="" }
="" временная="новый(структура" узла);
="" временные=""&ГТ;информация = ценность;
if (q->next == NULL)
{
q->next = tmp;
tmp->next = NULL;
tmp->prev = q;
}
еще
{
ТМП-&ГТ;следующий = г-&ГТ;далее;
ТМП-и GT;далее-&ГТ;пред = ТМП;
q->next = tmp;
tmp->prev = q;
}
cout<<"элемент вставлен"<<endl;
}
="" *первое="" элемент="" удаление*=""
пустота="" double_llist::remov_beginning(инт="" стоимости)
{
="" структуры="" узел="" *ТМП="" *м;
="" если="" (пуск-=""&ГТ;информация == значение)
{
tmp = пуск;
start = start->Далее;
start->prev = NULL;
cout<<"элемент удален"<<endl;
бесплатно(tmp);
="" вернуть;
="" }="" вопрос="запустить;
}
"
="" *
="" *="" удаление=" " из="" элемента="" из="" списка=""
=""
пустота="" double_llist::remove_end(инт="" стоимости)
{
структуры="" узел="" *ТМП="" *м;
="" если="" (м-=""и GT;далее-&ГТ;информация == значение)
{
tmp = q->Далее;
бесплатно(tmp);
q->next = NULL;
cout<<"элемент удален"<<endl;
вернуть;
="" }="" вопрос="нуль;
"
}
="" *="" deltetion="" after="" value="" x=""
пустота="" double_llist::remove_afterx(инт="" стоимости)
{
="" структуры="" узел="" *ТМП="" *м;
="" *первое="" элемент="" удаление*=""
="" если="" (пуск-=""&ГТ;информация == значение)
{
tmp = пуск;
start = start->Далее;
start->prev = NULL;
cout<<"элемент удален"<<endl;
бесплатно(tmp);
="" вернуть;
="" }
="" q="старт;
"хотя="" (м-=""и GT;далее-&ГТ;следующий != Нуль)
{
/*Элемент, удаленный между ними*/
если (г-и GT;далее-&ГТ;информация == значение)
{
tmp = q->Далее;
вопрос-&ГТ;следующий = ТМП-&ГТ;далее;
ТМП-и GT;далее-&ГТ;пред = м;
cout<<"элемент удален"<<endl;
бесплатно(tmp);
="" вернуть;
="" }
="" q="q-">Далее;
}
/*последний элемент удален*/
если (г-и GT;далее-&ГТ;информация == значение)
{
tmp = q->Далее;
бесплатно(tmp);
q->next = NULL;
cout<<"элемент удален"<<endl;
вернуть;
="" }
="" соиь<&ЛТ;"элемент="" "&ЛТ;&ЛТ;значение&ЛТ;&ЛТ;"="" не="" нашли"на<<епси;
}
=""
="" *
="" *="" отображение="" элементов="" из="" двойной="" ссылке="" список
=""
пустота="" double_llist::display_dlist()
{
="" структуры="" узел="" *м;
="" if="" (start="=" null)
="" {
="" cout<<"list="" empty,nothing="" to=" display"<<endl;
="" q="старт;
"cout<<"the="" list="" is="" :"<<endl;
="" while="" (q="" !="NULL)
"соиь<&ЛТ;м-=""и GT;информация&ЛТ;&ЛТ;" &ЛТ;-&ГТ; ";
q = q->Далее;
}
соиь<&ЛТ;"нуль"на<<епси;
}
void double_llist::="" поиск()
=""
{=""
структуры="" узел="" *ПТР;=""
int="" item,i="0,flag;" *head;
ptr="голова;"
if(ptr="=" null)=""
cout<<"\nempty="" list\n";=""
}=""
еще=""
соиь<&ЛТ;"\nenter="" элемента="" что="" вы="" хотите="" к="" выдаче?\Н";=""
cin="">>item;
while (ptr!=NULL)
{
if(ptr->info == item)
{
cout<<"\nitem найдено в местоположении %d ",i+1;
флаг=0;
перерыв;
}
еще
{
флаг=1;
}
я++;
ptr = ptr -> Далее;
}
если(флаг==1)
{
cout<<"\nItem не найден\n";
}
}
}
Что я уже пробовал:
я попробовал изменить метод поиска ,вставить конец и удалить первый и конец
мне действительно нужно решить эту проблему и узнать, почему они не сработали!