Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
Подсолнух
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 94
#1

Списковые структуры данных - C++

19.10.2010, 18:19. Просмотров 2133. Ответов 0
Метки нет (Все метки)

Привет всем, я уже не могу, выручайте, надо сделать 2 задачи, но 1 задача это больше идет как разбор списков. Ну я вообщем прошу помощи

Первая задача:
Основные работы со списками поля которых могут хранить целые числа.Кроме того, в виде отдельных функций реализованы операции по заполнению списка элементами, обходу и печати списка, поиска со вставкой новых элементов и поиска с удалением элементов по заданному значению информационного поля. Обозначения - Указатель на начало списка; p, q - вспомогательные(рабочие) указатели.

Исходник:


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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include<iostream>
//предварительное оисание структуры элемента списка
struct TNode;
//описываем тип-указатель на элемент структуры
typedef TNode* PNode;
//элемент списка
struct TNode
{
    int Data;  //поле данных
    PNode Next; //поле указателя на следующий элемент
};
//Добавление элемента в начало списка
void AddFirst(PNode& First, int Data)
{
    PNode p = new TNode;   //указатель на новый элемент
    p->Data = Data;
    p->Next = First;
    First = p;
}
//Вставка элемента в середину списка
void AddAfter(PNode& Pred, int Data)
{
    PNode p=new TNode;
    p->Data=Data;
    p->Next=Pred->Next;
    Pred->Next=p;
}
//Вставка элемента в конец списка
void AddLast(PNode& First, int Data)
{
    PNode p1, p2 = First;
    while(p2->Next != NULL)
        p2 = p2->Next;
    p1=new TNode;
    p1->Data=Data;
    p2->Next=p1;
    p1->Next = NULL;
}
//Удаление элемента из начала списка
void DelFirst(PNode& First)
{
    PNode p = First;
    First = First->Next;
    delete p;
}
//Удаление элемента из середины списка
void DelAfter(PNode& Pred)
{
    PNode p = Pred->Next;
    if (p)
    {
        Pred->Next = p->Next;
        delete p;
    }
}
//Удаление из списка
void DelLast(PNode& First)
{
    PNode p1 = First, p2;
    while (p1->Next != NULL)
        p1 = p1->Next;
    p2 = p1->Next;
    p1->Next = NULL;
    delete p2;
}
//Заполнение списка
void InputList(PNode& First)
{
    int n, Data;
    cout<<"Введите количество элементов: ";
    cin>>n;
    for (int i=1; i<=n; i++)
    {
        cout<<"Введите элемент: ";
        cin>>Data;
        AddFirst(First, Data);
    }
}
//Обход и печать списка
void PrintList(PNode First)
{
    PNode p = First;
    while (p)
    {
        cout<<p->Data<<' ';
        p = p->Next;
    }
    cout<<endl;
}
//Поиск со вставкой элемента в список
void FindIns(PNode& First, int x)
{
    PNode p=First, q=NULL; //q отстает от p на один шаг
    //пока не конец списка или не найден искомый элемент...
    while (p && x != p->Data)
    {
        q = p;
        p = p->Next;    //Идет по списку
    }
    //если найденны элемент - первый, добавляем его еще раз
    if (!q)
        AddFirst(First, x);
    else //а если не первый или нет такого элемента, то...
        AddAfter(q,x);
}
//Поиск с удалением элемента из списка
void FindDel(PNode& First, int x)
{
    PNode p=First, q=NULL; //q отстает на P на один шаг
    //пока не дощли до конца списка
    while (p)
        //если нашли элемент...
        if (p->Data == x)
            if (!q) //... и он первый в списке
            {
                DelFirst(First);
                p = First; //p снова установить на начало
            }
            else  //... а если он не первый в списке
            {
                DelAfter(q);
                p = q;
            }
        else
        {
            q = p;
            p = p->Next;   //идем по списку
        }
}
void main()
{
    PNode First = NULL;
    InputList(First);
    PrintList(First);
    cout<<"Введите значение для вставки: ";
    int Data;
    cin>>Data;
    FindIns(First, Data);
    PrintList(First);
    cout<<"Введите значение для удаления: ";
    cin>>Data;
    FindDel(First, Data);
    PrintList(First);
}

Но он с ошибками, не понимаю вроде все так должно быть, но выдает все равно.








2 задача:

Дан список содержащий перечень товаров. Из элементов 1-го списка (товары изготовленные фирмой SONY) создать новый список.

Исходника нет, помогите сделать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2010, 18:19     Списковые структуры данных
Посмотрите здесь:

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

Структуры данных - Visual C++
Где я ошибся? Вот суть задания: Создание структурированного типа данных: Аудитория: номер, площадь, количество посадочных мест. ...

Сортировка данных структуры! - C++
требуется чуть-чуть, а никак :-((. Добавить сортировку по полю пробег!!!! Microsoft VS Studio 2005 C++. я знаю что тут типа как строчек 5...

Алгоритмы и Структуры Данных - C++
Помогите пожалуйста очень нужна помощь... Функция задана следующим образом, где . Какой асимптотой для нее является функция ? Дайте...

Выбор структуры данных - C++
Нужна ассоциативная структура, которая будет не строго упорядоченной (элементы должны лежать в порядке их вставки). + желательно, чтобы...

Комбинированные структуры данных - C++
подскажите как дописать чтобы сумму оплаты считало в задаче вот текст предприятие, снабжающее потребителей электро энергией, выписывает...

Шаблон структуры данных - C++
Всем привет, в универе дали задание, не понимаю совсем, напишите пожалуйста, Разработать шаблоны структуры данных в памяти. Тип...

Вывод данных из структуры - C++
Доброй ночи:) Возникла проблема вывода данных из структуры. То бишь совсем ничего не выводится,программа просто зависает и все. #pragma...

Структуры данных: Списки - C++
Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат: • Номер УДК; • ...

Задание на структуры данных - C++ Builder
никак не могу сообразить, как обратиться к элементам очереди. в задании нужно создать кнопку, при нажатии которой будет выводиться...

Структуры данных. Список - C++
В общем есть у меня структура рейсов, она должна содержать список пассажиров. Как реализовать понять не могу. Хотел в структуру список...

Функции и структуры данных - C++
Прошу помочь с задачей. 1. Для многочлена задать тип данных, описывающий его структуру. 2. Написать функции, описывающие это...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru