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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
#1

Динамические структуры: линейные списки - C++

11.03.2009, 14:21. Просмотров 1999. Ответов 13
Метки нет (Все метки)

Люди помогите
Дали задачу из учебника Павловской
Вот вроде смотрю как в учебнике написано про линейные списки все понятно.
Как начинаю пытаться решить задачу впадаю в ступор!!:'(:'(:'(
Помогите люди добрые!

Предметный указатель организован как линейный список.
Каждая компонента указателя содержит слово и номера страниц, на которых это
слово встречается. Количество номеров страниц, относящихся к одному слову, от
одного до десяти.
Составить программу, которая обеспечивает:
• начальное формирование предметного указателя;
• вывод предметного указателя;
• вывод номеров страниц для заданного слова.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок
при вводе.

есть конечно решение похожей задачи, но оно слишком замудреное, с ним я точно не разберусь:'(:'(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2009, 14:21     Динамические структуры: линейные списки
Посмотрите здесь:

Динамические структуры (линейные списки): Run-Time Check Failure #2 - Stack around the variable ... was corrupted. - C++
Снова необходима ваша срочная помощь. Программа по димнамическим структурам на С++. Выполняет все необходимые действия, но при программном...

Динамические структуры данных. Односвязные списки - C++
Вот код. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> using namespace std; const int k = 101;...

Линейные списки - C++
Ребят, подскажите в чем ошибка:( Компилятор не находит, а при запуске вылетает. Я подозреваю, что проблема с памятью... Искал информацию в...

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

Линейные Односвязные Списки С++ - C++
Разработать и реализовать программу создания и обработки линейного односвязного списка с одним информационным полем, которое содержит целое...

Односвязные линейные списки - C++
Доброго времени суток. Передо мной стоит задача написание программы, которая принимает два списка, вводимых с клавиатуры и проверяет их на...

Задача на линейные списки - C++
Задание : в файловой системе каталог файлов организован как линейный список. Для каждого файла в каталоге содержатся следующие сведения :...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
11.03.2009, 14:36     Динамические структуры: линейные списки #2
я че-то в условие не вьеду

структура должны быть описано так?

C++
1
2
3
4
5
6
7
struct PRED_UKAZ
{
     char *word;
     int page;
     PRED_UKAZ *next;
     PRED_UKAZ *prev;
}
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.03.2009, 14:49     Динамические структуры: линейные списки #3
C++
1
2
3
4
5
6
typedef struct nlist {
    char word[100];
    int page[10], npages;   /* npages для вывода страниц потом */
    /* struct nlist *prev, *next; */ /* для задачи сойдёт односвязный - меньше кода */
    struct nlist *next;
} Lnode, *Lnodep;
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
11.03.2009, 15:09     Динамические структуры: линейные списки #4
и так че у тебя не получается?

p.s: ты Си или Си++ учишь? просто синтаксис сишный в структуре у тебя
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
11.03.2009, 16:05  [ТС]     Динамические структуры: линейные списки #5
Don Corleone, дык структуру то я и сама написала, проблема с написанием функций к ней, у меня что-то плохо получается дружить с у казателями
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.03.2009, 16:08     Динамические структуры: линейные списки #6
известно что не получается, поиск слова по ходу
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.03.2009, 16:16     Динамические структуры: линейные списки #7
кое-что подобное, есть поиск по определённому критерию
Вложения
Тип файла: zip swimmers.tar.zip (1.9 Кб, 45 просмотров)
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
11.03.2009, 16:23  [ТС]     Динамические структуры: линейные списки #8
accept, у меня скорей проблема с начальным формированием этого предметного указателя!!!
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.03.2009, 16:57     Динамические структуры: линейные списки #9
предметный указатель никак не связан с понятием указателя из языка

здесь предметный указатель == список узлов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    Lnodep a = CreateNode();
    Lnodep b = CreateNode();
    
    a->word = "one";
    a->page[0] = 5;
    a->pages = 1;
    a->next = b;
 
    b->word = "two";
    b->page[0] = 10;
    b->page[1] = 12;
    b->pages = 2;
    b->next = NULL;
список получился такой a->b->nil

бывают узлы типа
C++
1
    Lnode a;
а бывают указатели на узлы (то есть хранящие просто адрес памяти, где расположен узел)
C++
1
    Lnodep ap;
при этом записи Lnodep ap; и Lnode *ap; одинаковы
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
11.03.2009, 17:05  [ТС]     Динамические структуры: линейные списки #10
accept, спасибо, завтра попробую, а то сегодня уже голова пухнет%)

Добавлено через 2 минуты 26 секунд
А
C++
1
2
Lnodep a = new Node;
Lnodep b = new Node;
не одно и то же???
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.03.2009, 17:11     Динамические структуры: линейные списки #11
тогда
C++
1
Lnodep a = new Lnode;
лучше написать
C++
1
2
3
4
Lnodep CreateNode(void)
{
    return (Lnodep) new Lnode;
}
и юзать потом
C++
1
    Lnodep a = CreateNode();
так понятнее будет, что за действия производятся на любом этапе
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
11.03.2009, 17:19  [ТС]     Динамические структуры: линейные списки #12
%)
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
11.03.2009, 22:20     Динамические структуры: линейные списки #13
ну посмотри вот... я тут реализовывал дек.. т.е. можешь сделать подобно, толлько вместо Data свои поля создать..ну и убрать пару ненужных функций

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
/////////////////////////////////////////////////////////////////
//          (c) 2009 Igor Kalnitsky                          //
/////////////////////////////////////////////////////////////////
#include <iostream.h>
#include <conio.h>
/////////////////////////////////////////////////////////////////
struct dek_node
{
    int data;
    dek_node *prev;
    dek_node *next;
};
/////////////////////////////////////////////////////////////////
dek_node *CreateDek(int Data)
{
    dek_node *dekNode = new dek_node;
    
    dekNode->data = Data;
    dekNode->prev = NULL;
    dekNode->next = NULL;
    
    return dekNode;
}
/////////////////////////////////////////////////////////////////
dek_node *PutBegin(dek_node *dek,int Data)
{
    dek_node *dekNode = new dek_node;
 
    while (dek->prev != 0) dek = dek->prev;
 
    dekNode->data = Data;
    dekNode->prev = NULL;
    dekNode->next = dek;
 
    dek->prev = dekNode;
 
    return dekNode;
}
/////////////////////////////////////////////////////////////////
dek_node *PutEnd(dek_node *dek,int Data)
{
    dek_node *dekNode = new dek_node;
 
    while (dek->next != 0) dek = dek->next;
 
    dekNode->data = Data;
    dekNode->prev = dek;
    dekNode->next = NULL;
 
    dek->next = dekNode;
 
    return dekNode;
}
/////////////////////////////////////////////////////////////////
void ExtractEnd(dek_node *dek)
{
 
    while (dek->next != 0) dek = dek->next;
 
    do
    {
        cout << dek->data << " ";
        dek = dek->prev;
    } while(dek->prev != 0);
 
    cout << dek->data;
}
/////////////////////////////////////////////////////////////////
void ExtractBegin(dek_node *dek)
{
    
    while (dek->prev != 0) dek = dek->prev;
 
    do 
    {
        cout << dek->data << " ";
        dek = dek->next;
    } while(dek->next != 0);
 
    cout << dek->data;
}
/////////////////////////////////////////////////////////////////
dek_node *ClearDek(dek_node *dek)
{
    while (dek->next != 0) dek = dek->next;
 
    while (dek->prev != 0)
        {
            dek_node *tmp = dek;
            dek = dek->prev;
            dek->next = NULL;
            delete tmp;
        }
 
    return dek;
}
/////////////////////////////////////////////////////////////////
bool IsSpace(dek_node *dek)
{
    if (dek->next == NULL && dek->prev == NULL) 
        return true;
 
    return false;
}
/////////////////////////////////////////////////////////////////
int main()
{
    int data;
 
    cout << "Vvedite element deka = ";
    cin >> data;
 
    dek_node *dek = CreateDek(data);
 
    cout << "Dobavit v nachalo Deka = ";
    cin >> data;
    dek = PutBegin(dek, data);
 
    cout << "Dobavit v konec Deka = ";
    cin >> data;
    dek = PutEnd(dek, data);
 
    cout << "\nDek s nachala: \n";
    ExtractBegin(dek);
 
    cout << "\n";
 
    cout << "Dek s konca: \n";
    ExtractEnd(dek);
 
    cout << "\n\nOchishaem dek...\n";
    dek = ClearDek(dek);
 
    cout << "\nDek pustoi? ";
    if (IsSpace(dek)==true) 
        cout << "Yes"; else cout << "No";
 
    getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2009, 08:14     Динамические структуры: линейные списки
Еще ссылки по теме:

Односвязные линейные списки - C++
Здравствуйте! Помогите пожалуйста. Даны текстовый файл и строка s. Группы символов, разделенные пробелами, будем называть ...

Линейные двусвязные списки - C++
Проверьте пожалуйста. 1.Дан список. Найти указатель на его последний элемент. template&lt;typename T&gt; node&lt;T&gt; * FindLastElem(node&lt;T&gt;...

Стек, очередь (линейные списки) - C++
Привет! Мне нужно поместить четные элементы стека в динамический массив, затем вывести содержимое этого массива и поместить элементы стека...

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

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


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

Или воспользуйтесь поиском по форуму:
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
12.03.2009, 08:14  [ТС]     Динамические структуры: линейные списки #14
Don Corleone, Спасибо теперь что-то получается, думаю теперь смогу разобраться
Yandex
Объявления
12.03.2009, 08:14     Динамические структуры: линейные списки
Ответ Создать тему
Опции темы

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