С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 2
Регистрация: 06.02.2012
Сообщений: 37

Обратный связный список

16.08.2012, 16:06. Показов 1644. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

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

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
#include<iostream>
using namespace std;
 
struct link
{
    int data;
    link* next;
};
 
class linklist
{
 
private:
 
    link* first;
 
public:
 
    linklist()
    {
        first = NULL;
    }
 
    void additem (int d);
    void display();
 
};
 
void linklist::additem(int d)
{
    link* newlink = new link;
    newlink->data = d;
    newlink->next = NULL;
 
    link* current = first;
    while(current->next)
    {
        current = current->next;
    }
    current->next = newlink;
    
    cout << "Entry added " << newlink->data << endl;
}
 
void linklist::display()
{
    link* current = first;
    while(current)
    {
        cout << current->data << endl;
        current = current->next;
    }
}
 
int main()
{
    linklist li;
 
    li.additem(25);
    li.additem(36);
    li.additem(49);
    li.additem(64);
 
    cout << "\nList:\n";
    li.display();
 
    system("pause");
    return 0;
}
P.S.: бьюсь над функцией additem();, сейчас она не работает..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.08.2012, 16:06
Ответы с готовыми решениями:

Связный список (Используя структуру описания даты, построить связный список студентов, сформированный в алфавитном порядке)
Здраствуйте! Помогите пожалуйста найти косяк. Выводится только первая строчка из списка студентов. Вот такая задачка : Программа...

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости.
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию...

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

12
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
16.08.2012, 16:21
Вы переменной first так ничего и не присваиваете, нужно добавить случай для добавления первого элемента
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
16.08.2012, 16:26
Вопрос: А использование класса принципиально для вашей программы? Или можно без него обойтись?
ИМХО его использование здесь не оправдано.
0
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
16.08.2012, 16:38
Цитата Сообщение от Hydrogen Посмотреть сообщение
Вопрос: А использование класса принципиально для вашей программы? Или можно без него обойтись?
ИМХО его использование здесь не оправдано.
использование класса для связного списка - это идеально..
0
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
16.08.2012, 16:50
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
#include <stdio.h>
#include <conio.h>
 
#include <iostream>
 
using namespace std;
 
class linkedlist
{
    typedef struct list
    {
        int data;
        list* next;
    } LIST;
private:
    LIST* list;
    LIST* head;
    LIST* tail;
 
public:
    linkedlist()
     { list = NULL;     tail = list; }
 
    void fill();
    void addhead(int d);
    void addtail(int d);
    void display();
 
};
 
void linkedlist::fill()
{
    for (int n = 0; n < 100; n++)
        if ((n % 2) == 0) addhead(10 * n);
        else addtail(20 * n);
}
 
void linkedlist::addhead(int d)
{
    LIST* node = new LIST;
    node->data = d; 
    head = node; node->next = list; 
    if (list == NULL) tail = node; 
    list = node;
}
 
void linkedlist::addtail(int d)
{
    LIST* node = new LIST;
    node->data = d; node->next = NULL;
    if (list != NULL)
     { tail->next = node; tail = node; }
    else { list = node; tail = list; }
}
 
void linkedlist::display()
{
    while(list != NULL)
    {
        cout << list->data << endl;
        list = list->next;
    }
}
 
int main()
{
    linkedlist li; 
    cout << "\nList:\n";
    li.fill(); li.display();
 
    _getch();
 
    return 0;
}
Миниатюры
Обратный связный список  
1
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
16.08.2012, 17:04
Цитата Сообщение от Leomana Посмотреть сообщение
Вопрос: А использование класса принципиально для вашей программы? Или можно без него обойтись?
ИМХО его использование здесь не оправдано.
использование класса для связного списка - это идеально..
Можно обойтись и обычной структурой (я уже так не раз делал, хотя структуры не очень далеко отстоят от классов).
0
0 / 0 / 2
Регистрация: 06.02.2012
Сообщений: 37
16.08.2012, 17:06  [ТС]
Огромное спасибо!

Сейчас буду разбираться в решении.

А вообще помню последний раз так голову ломал когда со стеком заморачивался, не просто стек сделать, а чтобы он по кругу добавлял, и перезаписывал самый старый эдемент новым, но тогда сам догнал. Ну тут уж сдался... Еще раз спасибо!
0
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
16.08.2012, 17:16
Цитата Сообщение от Hydrogen Посмотреть сообщение
Можно обойтись и обычной структурой (я уже так не раз делал, хотя структуры не очень далеко отстоят от классов).
я больше скажу в C++ структура это то же самое что и класс, и различие только одно - установленная видимость по умолчанию
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
16.08.2012, 17:26
Цитата Сообщение от Leomana Посмотреть сообщение
я больше скажу в C++ структура это то же самое что и класс, и различие только одно - установленная видимость по умолчанию
Именно из-за установленной по умолчанию видимости я структуры использую несколько чаще чем классы: не нужно писать "private" "public" и т.п. чтобы обеспечить видимость. Меньше кода - меньше вес программы(думаю это и так понятно) даже если сэкономил всего на паре символов. Конечно это не сильно актуально, когда имеются "объемы" на ГБ оперативной памяти, но увы не все устройства ими обладают.
0
16.08.2012, 18:53

Не по теме:

Hydrogen, я правильно вас понимаю - вы жертвуете удобочитаемостью и безопасностью ради беснословного сокращения программы?

0
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
16.08.2012, 19:07
Цитата Сообщение от Hydrogen Посмотреть сообщение
Именно из-за установленной по умолчанию видимости я структуры использую несколько чаще чем классы: не нужно писать "private" "public" и т.п. чтобы обеспечить видимость. Меньше кода - меньше вес программы(думаю это и так понятно) даже если сэкономил всего на паре символов. Конечно это не сильно актуально, когда имеются "объемы" на ГБ оперативной памяти, но увы не все устройства ими обладают.
смех да и только.. о каких сокращениях вы пишите?
в структуре точно так же пишется Public и private , просто в структуре public по умолчанию, в отличие от класса - в котором private.. вы серьезно считаете , что если вы пишите эти спецификаторы то вы экономите ОП?? Надо книги читать) даже если в С++ структуру сделали как класс, и не значит, что надо радоваться и вместо класса использовать структуру, лучше структуру использовать так как она использовалась в С . зе енд ^_^
0
 Аватар для cmath
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
17.08.2012, 05:35
Цитата Сообщение от Leomana Посмотреть сообщение
смех да и только.. о каких сокращениях вы пишите?
Мб и смех, я новичок и не совсем компетентен. Тем не менее факт остаётся фактом:
Мне тем не менее удалось заменив классы структурами сэкономить дисковое пространство и RAM.
Может дело и в функциях-членах, которые я составлял, хз.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
20.08.2012, 21:30
Цитата Сообщение от Hydrogen Посмотреть сообщение
Меньше кода - меньше вес программы(думаю это и так понятно)
Меньше вес исходника всего-навсего. private-public-protected - это нужно только компилятору. Компилятор проверяет, не пытается ли неуполномоченный код обратиться к привилегированным данным, в ассемблере уже никаких этих проверок нет.
Здесь же речь о другом - об ООП. Пока вы не понимаете, для чего это нужно, и, фактически, заменяете ОО-код (данные едины с методами их обработки) обычным процедурным стилем, как было в Си (данные отдельно, методы обработки отдельно, всё это перемешано и не понятно, кто с чем что делает), не понимаете, чем хорошо сокрытие реализации и раскрытие только интерфейса, не задумываетесь (раз вы новичок) о поддержке кода (а только о его написании). А раз вы этого не понимаете - не стоит об этом судить и говорить, что класс для списка неуместен. Реализация абстрактной структуры данных - идеальный пример для того, чтобы показать, чем хорош ОО-стиль.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2012, 21:30
Помогаю со студенческими работами здесь

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

Связный список
Здравствуйте. Имеется структура struct list { CString name,attr,path,date; list* next; }; list* first = NULL;

Связный список
Скажите, пожалуйста, почему не отображается lastName? Или в структуре можно создавать только один тип для связных списков? #include...

Связный список
node *temp; 1.temp = (node*)malloc(sizeof(node)); 2.temp = new node; 1)Как работает (node*)malloc(sizeof(node)) ? что...

Связный список
Не получается нормально скомпоновать файлы :( Сделал связный список использую шаблоны класса. Файл ListSpisok.h и есть сам связный...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru