Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 28.03.2010
Сообщений: 114
1

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

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

Author24 — интернет-сервис помощи студентам
Привет всем, я уже не могу, выручайте, надо сделать 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) создать новый список.

Исходника нет, помогите сделать
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2010, 18:19
Ответы с готовыми решениями:

Понятие структуры данных. Элементарные структуры данных. Простые структуры данных
Понятие структуры данных. Элементарные структуры данных. Простые структуры данных: методы...

Динамические структуры данных, списковые структуры (надо разобраться что делает программа)
дана программа, надо помочь выяснить что в ней делает каждая подпрограмма unit Unit6; ...

Динамические структуры данных. Организация данных в списковые структуры
Написать программу, формирующую два списка, заполняя их числами из файлов. Объединить оба списка в...

Динамические структуры данных. Организация данных в списковые структуры
Написать программу вставки нового элемента в список за некоторым заданным по- рядковым номером...

0
19.10.2010, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2010, 18:19
Помогаю со студенческими работами здесь

Списковые структуры. Удаление
Прога, осуществляющая удаление символов из строки вещественного числа. Делал по методичке, но там...

списковые структуры (снова про ферьзей)
С помощью предиката queens 3-х аргументов, найдите все правильные расстановки ферзей на шахматной ...

Перемещение группы строк во входном текстовом файле, используя линейные списковые структуры
Что-то я затупил с перемещениями ссылок -_-. В tmp закинул те строки, которые нужно переместить -...

Используя только линейные списковые структуры вычислить значение первой производной полинома в заданной точке x
Это задание надо выполнять без использования двоичных деревьев, а используя только линейные...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru