[off]офтоп особенно[/off]заколебало меня всё
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
struct TList
{
int data;
struct TList *next,*prew;
};
typedef struct TList ttlist;
ttlist *head, *work1, *work2, *work3;
void print_list()
{
cout << "******************************\n";
cout << "Сейчас в листе: \n";
work1 = head;
while (work1->next != NULL)
{
cout << " число: " << work1->data << "\n";
work1 = work1->next;
}
cout << " число: " << work1->data << "\n";
cout << "******************************\n";
}
//////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void ins_member(int data)
{
work1 = head;
if (work1->data > data)
{
work2 = (ttlist *)malloc (sizeof(ttlist));
if (work2 == NULL)
{
cout << "Hет памяти \n Программе крышка...\n";
exit(1);
}
work2->prew = NULL;
work2->next = head;
head->prew = work2;
head = work2;
head->data = data;
cout << "Данные вставленны...\n\n";
}
else
{
while ((work1->data < data) && (work1->next != NULL))
work1 = work1->next;
if (work1->data > data)
{
work2 = work1->prew;
work3 = (ttlist *)malloc (sizeof(ttlist));
if (work3 == NULL)
{
cout << "Hет памяти \n Программе крышка...\n";
exit(1);
}
work3->data = data;
work2->next = work3;
work3->prew = work2;
work1->prew = work3;
work3->next = work1;
cout << "!..\n\n";
}
else
{
work2 = (ttlist *)malloc (sizeof(ttlist));
if (work2 == NULL)
{
cout << "Hет памяти \n Программе крышка...\n";
exit(1);
}
work2->data = data;
work1->next = work2;
work2->prew = work1;
work2->next = NULL;
cout << "Данные вставленны...\n\n";
}
}
}
//////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
int del_member(int data)
{
int err = -1;
work1 = head;
if (work1->data == data)
{
head = work1->next;
head->prew = NULL;
free(work1);
err = 0;
}
else
{
while ((work1->data != data) && (work1->next != NULL))
work1 = work1->next;
if (work1->next != NULL)
{
work2 = work1->prew;
work3 = work1->next;
work2->next = work3;
work3->prew = work2;
free(work1);
err = 0;
}
else if (work1->data == data)
{
work2 = work1->prew;
work2->next = NULL;
free(work1);
err = 0;
}
}
return(err);
}
//////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void create_list()
{
head = (ttlist *)malloc (sizeof(ttlist));
if (head == NULL)
{
cout << "Hет памяти \n Программе крышка...\n";
exit(1);
}
head->next = NULL;
head->prew = NULL;
}
//////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
int cmpstr(char *str1, char *str2)
{
int i = 0;
while ((str1[i] == str2[i]) && (str1[i] != 0) && (str2[i] != 0)) i++;
if ((str1[i] == 0) && (str2[i] == 0)) return(1);
else return(0);
}
//////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//////////////////////////////////*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void main()
{
cout << "Добавить новую переменную 'i <data>',\n";
cout << "Удалить переменную 'd <data>',\n";
cout << "Посмотреть список 'v',\n";
cout << "Выход из программы 'e'.\n\n";
int i;
create_list();
cout << "Введите начальные данные: ";
cin >> i;
head->data = i;
cout << "Список создан!!!...\n\n\n";
int param;
char command[4] = "";
while (!cmpstr(command,"e"))
{
cout << "Введите команду: ";
cin >> command;
if (cmpstr(command,"i"))
{
cin >> param;
ins_member(param);
}
else if (cmpstr(command,"d"))
{
cin >> param;
if (head->next != NULL)
{
if (del_member(param) == 0) cout << "Данные удалены...\n\n";
else cout << "Hе могу удалить!..\nHет такого у меня...\n\n";
}
else cout << "Hе могу удалить!..\nДолжен остаться хоть один (c) Дунька Маклауд..\n\n";
}
else if (cmpstr(command,"v")) print_list();
else if (!cmpstr(command,"e"))
{
cout << "Hеправильная команда!...\n\n";
cout << "Добавить новую переменную 'i <data>',\n";
cout << "Удалить переменную 'd <data>',\n";
cout << "Посмотреть историю 'v',\n";
cout << "Выход из программы 'e'.\n\n";
}
}
}