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

Работа с линейными списками - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как грамотно нтерпретировать ввод нового имени типа, введённого typedef http://www.cyberforum.ru/cpp-beginners/thread277481.html
Друзья! Дело в том, что вот такой вот код: typedef char (*char6) ; И он значит, что char6 есть указатель на строку из шести символов. Это я прочёл в учебнике, то бишь вызубрил, но чуть более сложную конструкцию я сам разобрать не могу. Хотелось бы какой-то общий алгорим прочесть подобно тому, как разбирать сложные объявления функций; благодаря последнему я сам могу кропать "указатель на...
C++ Вывести слова из строки в алфавитно порядке Написать программу на языке Си которая запрашивает строку у пользователя, состоящую из слов английского языка, слова разделены пробелами. Вывести эти слова в порядке алфавита. не пойму как реализовать вывод слов в порядке алфавита. спасибо всем кто поможет. http://www.cyberforum.ru/cpp-beginners/thread277479.html
C++ сохранение в файл
как сохранить массив структур в файл и как считать из файла в массив структур
Подскажите как понять ету строку C++
(N&1 ? -1 : 1) и ее аналог в с шарпе?
C++ Одномерный массив, определить точки являющиеся вершинами равнобедренного треугольника http://www.cyberforum.ru/cpp-beginners/thread277458.html
Народ, Помогите пожалуйста!!! В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, у1, х2, у2, x3, y3 и т.д. Определить номера точек, которые могут являться вершинами равнобедренного треугольника. можт кто хоть алгоритм подскажет, как я понимаю нужно проверить на равенство двух сторон, и если эти стороны...
C++ Как прописать алгоритм... на С++...для перевода из 16 в 10 систему счисления? там прописывать АBCDEF нужно? вот у меня есть листинг польской записи, и вот к ней нужно добавить алгоритм перевода из 16 в 10... принцип работы калькулятора таковой - вводишь выражение, например А3+В5*2/3 и прога вычисляет, а результат в десятичной системе... помогите #include <iostream> #include <string.h> #include <math.h> #include... подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
16.04.2011, 20:20     Работа с линейными списками
Помогите пожалуйста. Пытаюсь понять устройство линейных списков. Столкнулся с проблемой обхода списка и его вывода на экран. Как "научить" программу ориентироваться с ptr->next, т.е. с помощью этого указателя выводить узлы?
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
#include <iostream>
#include <conio.h>
#include <clocale>
#include <fstream>
using namespace std;
 
struct list
{
       struct list *next; // ГіГЄГ*Г§Г*òåëü Г*Г* ñëåä. ýëëåìåГ*ГІ Г±ГЇГЁГ±ГЄГ*
       struct list *prev; // ГіГЄГ*Г§Г*òåëü Г*Г* ïðåäûäóùèé ýëëåìåГ*ГІ Г±ГЇГЁГ±ГЄГ*
       int stip, zachetka, gruppa;
       string name;
};
list *head=0, *tail=0;
void input(list *ptr); // äîáГ*âëåГ*ГЁГҐ óçëГ* Г±ГЇГЁГ±ГЄГ*
void del(); // ГіГ¤Г*ëåГ*ГЁГҐ óçëГ* Г±ГЇГЁГ±ГЄГ*
void print(); // âûâîä Г*Г* ГЅГЄГ°Г*Г*
void poisk ();
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int choose;
    list* ptr = new list;
    ptr->next = 0;
    ptr->prev = 0;
    do
    {
        cout<<"Г—ГІГ® æåëГ*ГҐГІГҐ ñäåëГ*ГІГј:"<<endl
        <<"1. ÄîáГ*ГўГЁГІГј Г*îâûé ýëëåìåГ*ГІ"<<endl
        <<"2. ÏîêГ*Г§Г*ГІГј ñïèñîê"<<endl
        <<"Г‚Г*Гё âûáîð: ";
        cin>>choose;
        if (choose == 1)
            input(ptr);
        if (choose == 2)
        {
            list *ptr = 0; // Г*Г*Г·ГЁГ*Г*ГҐГ¬ Г± ãîëîâû
            if (head == 0)
                cout<<"Ñïèñîê ГЇГіГ±ГІ"<<endl;
            else
            {
                ptr = tail;
                cout<<endl<<"Г”Г*ìèëèÿ: "<< ptr->name<<endl;
                cout<<"ÃðóïïГ*: "<< ptr->gruppa<<endl;
                cout<<"Íîìåð ГЄГ*èæêè: "<< ptr->zachetka<<endl;
                cout<<"ÑòèïåГ*äèÿ: "<< ptr->stip<<endl<<endl;
                while (ptr->next!= 0)
                {
                     ptr=ptr->next; 
                     cout<<"Г”Г*ìèëèÿ: "<< ptr->name<<endl;
                     cout<<"ÃðóïïГ*: "<< ptr->gruppa<<endl;
                     cout<<"Íîìåð ГЄГ*èæêè: "<< ptr->zachetka<<endl;
                     cout<<"ÑòèïåГ*äèÿ: "<< ptr->stip<<endl<<endl;
                }
            }
        }
        cout<<"ÆåëГ*ГҐГІГҐ ïðîîäëæèòü? (y/n)"<<endl;
    } while (getch()!='n');
    return 0;
}
 
void input(list *ptr)
{
     if (head == 0)
         head = ptr;
     cout<<endl<<"Ââåäèòå ГґГ*ìèëèþ: ";
     cin>>ptr->name;
     cout<<"Ââåäèòå Г*îìåð ãðóïïû: ";
     cin>>ptr->gruppa;
     cout<<"Ââåäèòå Г*îìåð Г§Г*Г·ГҐГІГЄГЁ: ";
     cin>>ptr->zachetka;
     cout<<"Ââåäèòå Г±ГІГЁГЇГҐГ*äèþ: ";
     cin>>ptr->stip;
     tail = ptr;
     cout<<endl;
}
 
void print()
{
     list *ptr = 0; // Г*Г*Г·ГЁГ*Г*ГҐГ¬ Г± ãîëîâû
     if (head == 0)
         cout<<"Ñïèñîê ГЇГіГ±ГІ"<<endl;
     else
         while (ptr->next != 0)
         {
             cout<<"Г”Г*ìèëèÿ: "<< ptr->name<<endl;
             cout<<"ÃðóïïГ*: "<< ptr->gruppa<<endl;
             cout<<"Íîìåð ГЄГ*èæêè: "<< ptr->zachetka<<endl;
             cout<<"ÑòèïåГ*äèÿ: "<< ptr->stip<<endl<<endl;
             ptr = ptr->next;
         }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru