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

Односвязный список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Dev-c++ http://www.cyberforum.ru/cpp-beginners/thread73063.html
Так получилось, что должен некоторое время поработать в этом известном бесплатном компиляторе. В отличие от builder'а, где AnsiString интегрирован, такого удовольствия в dev-c++ нет. Зато есть такой класс, как String, позволяющий работать со строками в стиле с++. В корневой директории и в папке include есть заголочные файл string.h и strings.h, по логике, в которых должен описываться класс...
C++ Не получается вызвать функцию Есть функция "void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)" Нужно вызвать ее в другой функции.. Как это сделать?? Пробовал тупо "Image2MouseDown()" - пишет "too few parameters".. http://www.cyberforum.ru/cpp-beginners/thread73062.html
перевод в двоичную систему через классы C++
Помогите решить задачу используя классы. Дано натуральное число Р. Переведите его в двоичную систему счисления.
Создание и обработка файлов в С C++
Для участия в конкурсе исполнителей необходимо заполнить анкету с данными: -Ф.И.О; -год рождения; -название страны; -класс музыкального инструмента (гитара, фортепиано, скрипка). Вывести список самых молодых лауреатов конкурса по классам инструментов в порядке за-нятых мест.
C++ Изменение длины строк в динамическом массиве. http://www.cyberforum.ru/cpp-beginners/thread73048.html
Доброго времени суток! Имеется код : #include "stdafx.h" #include <iostream.h> #include <stdlib.h> int main() { int t,a=0,b=0,z,x,y,s; int **mas; cout<<"vvedite kol-vo strok : ";
C++ Матрица, заменить диагонали - нулями Пожалуйста, помогите с программой на Си (C), буду очень благодарен за помощь. Вот условие: 1) Дано матрицу А размером 6х6. Заменить в матрице элементы главной диагонали нулями. Нашол аналогичною задачю на паскале, но чтота нечто не виходит .... Если, не трудно, то еще 1 задачу, думаю для профессионалов это не составит труда. Вот условие: 2) Дан одномерный массив P, состоящий из 16... подробнее

Показать сообщение отдельно
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
11.12.2009, 18:09     Односвязный список
linked_list.h
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
#ifndef UTWO_LINKED_LIST
#define UTWO_LINKED_LIST 1
#include <iostream>
#include "nodes.h"
 
class linked_lists
{
    public:
        
        
        void show(); // для контроля
        void add(int value);
                
        linked_lists(){tail = NULL;}
        ~linked_lists();
    
    private:
        nodes* tail;        
};
 
 
// =======================================
void linked_lists::add(int value)
{
    if (tail==NULL) { tail = new nodes(); tail->prior=NULL;}
    //если список пуст, создаём узел.
 
    if(!tail->is_full())// если узел не полнoн, то засовываем туда value
    {
        tail->push(value);
        tail->sort();
    }
    else 
    //если узел полон, создаем новый, перекидываем в него пять последних элементов
    {
        nodes* node = new nodes();
        node->prior = tail;//связали со списком.
        
        int tmp;
        for(int i=1;i<=5;i++)
        {
            tail->pop(&tmp);
            node->push(tmp);
        }
        // 5 элемент сравнивается с value. больший отпавляется в новый узел.
        // меньший остается.
        tail->pop(&tmp);
        if(value<tmp) {tail->push(value);node->push(tmp);}
        else {tail->push(tmp);node->push(value);}
        
        // осталось только переопределить указатель на хвост
        
        tail = node;
        
    }
    
}
 
 
void linked_lists::show()
{
    if(tail==NULL) {std::cout<<"\n linked-list is empty now..\n\n";return;}
    nodes* ip = tail;
    while (true)
    {
        std::cout<<ip;
        ip->show();
        std::cout<<"\n";
        if(ip->prior==NULL) break;
        ip=ip->prior;
    }
 
}
 
linked_lists::~linked_lists()
{
    if(tail==NULL) {std::cout<<"\nmemory is free!!\n";return;}
    
    nodes* ip = tail;
    while (ip->prior!=NULL)
    {
        tail = ip;
        ip=ip->prior;
        delete tail;
    }
    delete ip;
    std::cout<<"\n memory is free!!!";  
    }
 
 
#endif


Добавлено через 28 секунд
nodes.h
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
#ifndef UTWO_NODES
#define UTWO_NODES 1
 
#include<iostream>
struct nodes
{
    
    void sort();
    void push(int value);
    void pop(int* value);
    void show();
    bool is_full();
    
    int* array;
    nodes* prior;
    
    nodes(){array = new int [10];top = 0;}
    ~nodes(){delete[] array;}
    private:
        int top; // показывает на первое свободное место
};
 
 
//=========================================
void nodes::push(int value)
{
    if (top>9) return; // на всякий случай.
    array[top++]=value;
}
 
void nodes::pop(int* out)
{
    if (!top) return; // на всякий случай.
    
    *out = array[--top];
}
 
void nodes::show()//для контроля
{
    for(int i=0;i<top;i++) std::cout<<"  "<<array[i];
}
 
void nodes::sort()                  //вставками.
{ 
    int tmp, i, j;
    for ( i=0; i < top; i++)
    {  
        tmp = array[i];   
        for ( j=i-1; j>=0 && array[j] > tmp; j--)
            array[j+1] = array[j];
        array[j+1] = tmp;
    }
}
bool nodes::is_full()
{
    return (top==10);
}
#endif


Добавлено через 43 секунды
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
#include <iostream>
#include "nodes.h"
#include "linked_list.h"
 
int main()
{
    linked_lists a;
    
    a.show();
    system("pause");
    for(int i=0;i<15;i++) 
    {
        a.add(-i*i+10*i);
        a.show();
        system("pause");
    }
    system("cls");
    
    
    a.show();   
    system("pause");
    delete &a;
    system("pause");
    return 0;
}
Добавлено через 3 минуты
на здоровье...
код сырой, классы не "сворачивал". будут вопросы - отвечу.
 
Текущее время: 19:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru