|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.12.2018, 18:39 | #1 |
Новичок
Джуниор
Регистрация: 16.11.2018
Сообщений: 2
|
Удаление повторяющихся элементов в двунаправленном списке
Всем привет! Ребята, помогите удалить повторяющийся элемент в двунаправленном списке. Код написан на с/с++.
/Двунаправленные списки Написать программу по созданию, просмотру, добавлению и решению поставленной задачи для двунаправленного линейного списка. Создать список из случайных целых чисел. Удалить из списка элементы с повторяющимися более одного раза значениями./ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> struct list_element { float value; struct list_element * next, *prev; }; void menu(); struct list_element * crt_list(); int view_list(struct list_element *); struct list_element * add_el_to_list(struct list_element *); float avg_list(struct list_element *); struct list_element * chg_list(struct list_element *, int); void main() { int ch, n; struct list_element * FIRST = NULL; while (true) { menu(); scanf_s("%d%*c", &ch); switch (ch) { case 0: return; case 1: FIRST = crt_list(); break; case 2: n = view_list(FIRST); break; case 3: FIRST = add_el_to_list(FIRST); break; case 4: FIRST = chg_list(FIRST, n); break; default: puts("Enter 1, 2, 3, 4 or 0"); break; } } _getch(); } void menu() { puts("Menu: "); puts("1. Create list."); puts("2. View list."); puts("3. Add item to list."); puts("4. Remove repeat elements from list"); puts("0. Exit."); } struct list_element * crt_list() { system("cls"); int n; list_element *head = NULL, *tail = NULL, *current = NULL; printf_s("Enter quantity elements of list : "); scanf_s("%d%*c", &n); for (int i = 0; i < n; i++) { current = new list_element; printf_s("Enter number : "); scanf_s("%f%*c", ¤t->value); current->prev = tail; current->next = head; if (head == NULL) { head = tail = current; } else { tail->next = current; current->prev = tail; tail = current; } } puts("List is created."); system("pause"); system("cls"); return current; } int view_list(struct list_element *list) { system("cls"); puts("Start list : "); int i = 1; while (list) { printf_s("%i = %.2f\n", i, list->value); list = list->prev; i++; } system("pause"); system("cls"); return --i; } struct list_element * add_el_to_list(struct list_element *list) { system("cls"); int n; printf_s("Enter quantity numbers to add to list : "); scanf_s("%d%*c", &n); list_element *head, *tail, *current; for (int i = 0; i < n; i++) { head = tail = current = list; current = new list_element; printf_s("Enter number : "); scanf_s("%f%*c", ¤t->value); current->prev =tail; current->next = head; tail->next = current; current->prev = tail; tail = current; list = current; } puts("Numbers are added to list."); system("pause"); system("cls"); return list; } struct list_element * chg_list(struct list_element *list, int n) { float *mas; mas = new float[n]; struct list_element * HEAD = NULL, *CURRENT = NULL, *TAIL = NULL, *list_1 = NULL; list_1 = list; int i = 1; for (i; i < n; i++) { int count = 0; list->value; int j = 1; for (j;j < n; j++) { if (list_1 == NULL) { list_1 = list; } if (list->value == list_1->value) { count++; if (count == 1) { for (int k = 0; k <= n; k++) { if (list_1->value != *(mas + k)) { list_1->value = list_1->value; } else break; if (k == n && list_1->value == list_1->value) { CURRENT = new list_element; CURRENT->value = list->value; CURRENT->prev = TAIL; CURRENT->next = HEAD; if (HEAD == NULL) { HEAD = TAIL = CURRENT; } else { TAIL->next = CURRENT; CURRENT->prev = TAIL; TAIL = CURRENT; } break; } } } if (count > 1) { *(mas + i) = list_1->value;//comment break; //comment } } list_1 = list_1->prev; } list =list->prev; if (list->prev == NULL) { list = list_1; } } puts("Repeat dates is removed."); system("pause"); return CURRENT; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление повторяющихся записей | Luca Brasi | SQL, базы данных | 2 | 26.02.2016 09:51 |
Удаление элемента в двунаправленном списке из начала | Grai | Общие вопросы C/C++ | 17 | 03.07.2015 16:03 |
Процедура удаления в двунаправленном списке | mishammm | Помощь студентам | 1 | 04.05.2014 07:05 |
Удаление повторяющихся элементов двунаправленого связного списка (Си) | lowercase | Общие вопросы C/C++ | 0 | 13.10.2012 12:09 |
Удаление повторяющихся записей | gavrylyuk | Microsoft Office Excel | 3 | 28.06.2008 08:10 |