Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для Veronika Yu.
2 / 2 / 0
Регистрация: 15.02.2010
Сообщений: 67

Алгоритмы и программы по использованию указателей и динамических структур данных

03.12.2010, 11:29. Показов 1333. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Прошу Вас помочь мне в написании задачи на С++. Вот текст:
Дан указатель P1 на первый элемент непустого двусвязного списка. Продублировать в списке все элементы с нечетными значениями (новые элементы добавлять перед существующими элементами с такими же значениями) и вывести указатель на первый элемент преобразованного списка.
Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2010, 11:29
Ответы с готовыми решениями:

Алгоритмы и программы по использованию указателей и динамических структур данных
Здравствуйте! Помогите, пожалуйста, написать задачу. Вот текст:Дан указатель P0 на один из элементов непустого двусвязного списка. Вывести...

Некорректная работа при использовании динамических структур и указателей
Помогите, пожалуйста, разобраться в проблеме. Функция выполняется корректно, результаты даёт правильные, но из-за неё программа заканчивает...

Программы с использованием динамических массивов и указателей
Написать программы с использованием динамических массивов и указателей. Начальные размерности массивов ввести с клавиатуры. Применение в...

3
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
04.12.2010, 06:34
решено
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
Здравствуйте! Прошу Вас помочь мне в написании задачи на С++. Вот текст:
Дан указатель P1 на первый элемент непустого двусвязного списка
Продублировать в списке все элементы с нечетными значениями 
(новые элементы добавлять перед существующими элементами с такими же значениями) 
и вывести указатель на первый элемент преобразованного списка.
Заранее спасибо 
*/
#include<iostream>
#include<stdlib.h>
#include<time.h>
struct nodes{
    int data;
    nodes* prev;
    nodes* next;
};
 
nodes* generate(int n);     // создаст нам список из n элементов, вернёт указатель на голову.
void destruct(nodes* ptr);  // Уничтожит все элементы списка начиная с *ptr.
void show(nodes* ptr);      // выведет на экран все элементы начиная с  *ptr.
 
int main(void){
    nodes* p1 = generate(5);
    show(p1);
    //=========================Решение
    nodes* iterator = p1;
    if(iterator->data%2 == 0){
        iterator->prev = new nodes;
        iterator->prev->data = iterator->data;
        iterator->prev->prev = NULL;
        iterator->prev->next = iterator;
        
        p1 = iterator->prev;
    }
    
    while(iterator->next!=NULL){
        if(iterator->next->data%2 == 0){
            iterator->next->prev = new nodes;
            iterator->next->prev->data = iterator->next->data;
            iterator->next->prev->next = iterator->next;
            iterator->next->prev->prev = iterator;
            
            iterator->next = iterator->next->prev;
            iterator = iterator->next;
        }
        iterator = iterator->next;
    }
    //========================= 
    
    show(p1);
    
    destruct(p1);
        p1 = NULL;
    return 0;
}
 
nodes* generate(int n){
    if (n<1) return NULL;
    
    srand(time(NULL));
    
    nodes* head = new nodes;
    head->next = NULL;
    head->prev = NULL;
    head->data = rand()%10+1;
    for(int i=1;i<n;i++){
        head->prev = new nodes;
        head->prev->next = head;
        head->prev->prev = NULL;
        head->prev->data = rand()%10+1;
        head = head->prev;
    }
    
    return head;
}
 
void show(nodes* ptr){
    if(ptr == NULL) return;
    while(ptr!=NULL){
        std::cout<<ptr->data<<"\t";
        ptr = ptr->next;
    }
    std::cout<<std::endl;
}
 
void destruct(nodes* ptr){
    if(ptr == NULL) return;
    
    do{
        nodes* tmp = ptr;
        ptr = ptr->next;
        delete tmp;
    }while(ptr!=NULL);
}
1
 Аватар для Veronika Yu.
2 / 2 / 0
Регистрация: 15.02.2010
Сообщений: 67
05.12.2010, 14:45  [ТС]
а это на С++ написано?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
06.12.2010, 04:55
Veronika Yu., да
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2010, 04:55
Помогаю со студенческими работами здесь

Построение динамических структур данных
Использование структурных ячеек, которые собственноручно создаются пользователем с помощью средств языка Паскаль. Средствами Паскаля...

Алгоритмы и программы циклических структур
ПОМОГИТЕ С ЗАДАЧАМИ,ПОЖАЛУЙСТА 1.Для заданного M получить таблицу первых M простых чисел 2.Численно убедится в спораведливости...

Алгоритмы и программы циклических структур
Добрый день всем! Помогите плз решить лабу, завтра сдать бы по-хорошему, самому сейчас сидеть времени вообще нет, курсач тоже надо завтра...

Преобразование простых динамических структур данных
Помогите пожалуйста с заданием :( Под именами х и у заданы списки Лиспа (а (b с)) и (d е), соответственно. Надо, используя их и не тратя...

Превращение простых динамических структур данных
Пожалуйста, помогите решить задачу!! Под именами х и y заданы списки Лиспы (a b c d e) и (1 2 3 4 5). Нужно получить список ((1 2 a b)(1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru