Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

есть конечно решение похожей задачи, но оно слишком замудреное, с ним я точно не разберусь:'(:'(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2009, 14:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамические структуры: линейные списки (C++):

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

Линейные односвязные списки, динамические массивы - C++
Помогите пожалуйста Читая целые числа из текстового файла, создать линейный односвязный список добавлением нового элемента в конец...

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

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

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

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

13
Monte-Cristo
2794 / 1380 / 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;
}
1
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
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;
0
Monte-Cristo
2794 / 1380 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
11.03.2009, 15:09 #4
и так че у тебя не получается?

p.s: ты Си или Си++ учишь? просто синтаксис сишный в структуре у тебя
0
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
11.03.2009, 16:05  [ТС] #5
Don Corleone, дык структуру то я и сама написала, проблема с написанием функций к ней, у меня что-то плохо получается дружить с у казателями
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
11.03.2009, 16:08 #6
известно что не получается, поиск слова по ходу
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
11.03.2009, 16:16 #7
кое-что подобное, есть поиск по определённому критерию
0
Вложения
Тип файла: zip swimmers.tar.zip (1.9 Кб, 45 просмотров)
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
11.03.2009, 16:23  [ТС] #8
accept, у меня скорей проблема с начальным формированием этого предметного указателя!!!
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
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; одинаковы
0
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;
не одно и то же???
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
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();
так понятнее будет, что за действия производятся на любом этапе
0
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
11.03.2009, 17:19  [ТС] #12
%)
0
Monte-Cristo
2794 / 1380 / 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;
}
3
Zaya007
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
12.03.2009, 08:14  [ТС] #14
Don Corleone, Спасибо теперь что-то получается, думаю теперь смогу разобраться
0
12.03.2009, 08:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2009, 08:14
Привет! Вот еще темы с ответами:

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

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

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

Односвязные линейные списки - C++
Помогите пожалуйста с задачей со списками, т.к вообще не могу в них разобраться. Задача такая: даны текстовый файл и натуральное число n....


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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