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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
Подсолнух
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 94
19.10.2010, 18:19     Списковые структуры данных #1
Привет всем, я уже не могу, выручайте, надо сделать 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++ Builder Задание на структуры данных
C++ Структуры данных в С++
C++ структуры данных: списки
C++ Структуры данных и алгоритмы
C++ Структуры данных на практике
C++ ООП.Разработать структуру элементов данных класса в виде динамической структуры данных
Абстрактные структуры данных C++
Структуры данных (создание, просмотр, дополнение и извлечения данных из файла, содержащего информацию о номерах телефонов сотрудников учреждения,ФИО) C++
Структуры и базы данных C++
C++ Вывод данных из структуры
Visual C++ Структуры данных

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

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

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