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

однонаправленный список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поменять местами наименьший и второй по величине элементы http://www.cyberforum.ru/cpp-beginners/thread39446.html
Здравствуйте господа программисты. Помогите исправит ошибку в программе. Задание собственно следующее:Поменять местами наименьший и второй по величине элементы в каждой строке матрицы.Писал прогу с паскаля, где то закралась ошибка.. Ни как не могу ее найти.. Программа меняет местами наименьший и наибольший элементы. Вот собственно код:#include<conio.h> #include<stdio.h> #include<stdlib.h> ...
C++ Обход произвольного дерева struct tree { char info; struct tree *left; struct tree *right; }; так, вопрос глупый -меня просто сомнения берут. вот смотрите, если обход бинарного дерева в симметричном порядке у нас функция процедура такая делает: void inorder(struct tree *root) { http://www.cyberforum.ru/cpp-beginners/thread39442.html
C++ Поиск
Вечер добрый. Подскажите максимально быстрый способ поиска, меня больше интересует не сама реализация а способ, так сказать или алгоритм.. Есть список ключ - значение. и ключ и значение строковые переменные. например 354321-фывалорфыдва 13-флыврадфыв 8735187351-флыврдафыв ...
C++ Заполнить матрицу линейной последовательностью (0-81), от левого верхнего угла по диагонали: вправо - вверх
Помогите пожалуйста написать программу: Заполнить матрицу линейной последовательностью (1-81), от левого верхнего угла по диагонали: вправо - вверх? в соответствиb с рисунком http://s40.***********/i088/0906/78/08a04dbff187t.jpg
C++ телефонный справочник http://www.cyberforum.ru/cpp-beginners/thread39425.html
Создать телефонный справочник, т.е. файл из записей с полями: ФИО, адрес (запись из 3 полей : улица, номер дома, квартиры) и номер телефона. Найти номер АТС (первые 2 цифры номера телефона), имеющей наибольшее число абонентов. Отсортировать по фамилиям. у кого нить что нить подобное имеется???
C++ Помогите пжл новичку написать прогу Нужно найти общие слова в 2-х предложениях подробнее

Показать сообщение отдельно
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
11.06.2009, 02:03     однонаправленный список
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
//базовый класс узла
class Node
{
    public:
        Node(){};
        virtual ~Node(){};
        virtual Node * Insert (int& iVal)=0;
        virtual void Show()=0;
    private:
} ;
//внутренний узел
class InternalNode: public Node
{
    public:
        InternalNode(int iVal,Node* n);
        ~InternalNode() {delete next;delete data;};
        virtual Node * Insert (int& iVal);
        virtual void Show(){cout<<*data<<endl; next->Show();};
    private:
        int* data;
        Node * next;
};
InternalNode::InternalNode (int iVal,Node* n)
{
    data = new int;
    *data = iVal;
    next=n;
} 
//посылаем элемент дальше, пока он не наткнется на TailNode
Node* InternalNode::Insert (int& iVal)
{
    next=next->Insert(iVal);
    return this;
}
//"концевой" элемент. Не пускает дальше себя
class TailNode:public Node
{
    public:
        TailNode(){};
        ~TailNode(){};
        virtual Node* Insert(int& iVal);
        virtual void Show() {};
    private:
};
Node* TailNode:: Insert(int& iVal)
{
    Node* temp;
    temp = new InternalNode (iVal,this);
    return temp;
}
//головной элемент. При добавлении элемента посылает его дальше по списку.
class HeadNode:public Node
{
    public:
        HeadNode();
        ~HeadNode() {delete next;};
        virtual Node * Insert (int& iVal);
        virtual void Show() {next->Show();};
    private:
        Node* next;
};
HeadNode::HeadNode()
{
    next=new TailNode;
}
Node* HeadNode::Insert(int& iVal)
{
    next= next->Insert(iVal);
    return this;
}
//сам список
class ListFwd 
{
    public:
        ListFwd();
        ~ListFwd() {delete head;};
        void Insert (int iVal);
        void ShowAll() {head->Show();};
    private:
        HeadNode* head;
};
ListFwd::ListFwd()
{
    head=new HeadNode;
}
void ListFwd::Insert(int iVal)
{
    head->Insert(iVal);
}
Вот полностью работающий однонаправленный список.
Есть два пути решения твоей задачи. 1: "отгрызать" по одному элементу в новый список. 2. создать двунаправленный список, в который запихать все элементы однонаправленного, а затем, просматривая двунаправленный список с конца пихаем его эл-ты в однонаправленный список.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru