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

Ошибка при заполнении двусвязного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программы для рабочего стола http://www.cyberforum.ru/cpp-beginners/thread701027.html
Здравствуйте уважаемы форумчане! Раньше (не профессионально) писал на делфи, но в данный момент изучаю с++. Меня интересует каким способом на с++ можно написать программу для рабочего стола (их ещё называют программы приколы), например елочка горит на рабочем столе или человечек бегает туда сюда... Я так понимаю это WinApi ? Есть ли какая нибудь информация по этому поводу... Заранее спасибо...
C++ Код неправильно определяет седловую точку #include "stdafx.h" #include <ctime> #include <cstdlib> #include <iostream> #include <conio.h> #include <stdio.h> using namespace std; int main () http://www.cyberforum.ru/cpp-beginners/thread701024.html
C++ Сортировка данных
#include <iostream> using namespace std; char shift(char *in) { char item, *out = in; item = in; *in++; while (*out++ = *in++); return item;
C++ Вывести в документе PDF русские буквы
Необходимо написать программный код для решения следующей задачи: вывести в PDF-документе русские буквы. Для этого необходимо задать шрифт с кодировкой Windows 1251.
C++ Класс Matrix, Перегрузка http://www.cyberforum.ru/cpp-beginners/thread700996.html
День добрый... У нас есть класс матрица (NxM), нужно сделать перегрузку "+", со статик матрицой всё работало прекрасно...но после переделки под динамическую, перестало...даже вывод перестал работать, подскажите пожалуйста, где ошибка( #include <iostream> #include <Windows.h> #include <cstdlib> using namespace std; typedef double T; class Matrix { private: T **arr;
C++ Дан массив размера N. Утроить в нем вхождения всех элементов с нечетными номерами Всем привет! Есть такая задачка Дан массив размера N. Утроить в нем вхождения всех элементов с нечетными номерами (1, 3...). Условный оператор не использовать. и как её решить не знаю... Если б не было условия, что надо без условного оператора, может быть и сама решила, а так... не могу=( Очень надеюсь на вашу помощь=) подробнее

Показать сообщение отдельно
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
18.11.2012, 20:26     Ошибка при заполнении двусвязного списка
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
#include <iostream>
#include <ctime>  
using namespace std;
/*
как вариант самодельная очередь в статическом массиве.
*/
 
struct node{
    int value;
    int level;
    node* left;
    node* right;
    node(int val=0):value(val), right(NULL), left(NULL), level(0){};
};
const int MAX_Q=20;//количество твоих элементов
struct queue{
  node* data[MAX_Q];
  int front;
  int back;
  queue():front(0), back(0){};
  int push_back(node* el){
    data[back]=el;
    back++;
    if(back==MAX_Q)    back=0;//LOOP array
    if(back==front) return 1;//OVERFLOW
    return 0;
  }
  node* pop_front(){
      if (back==front) return NULL;
      struct node* ret_val=data[front];
      front++;
      if(front==MAX_Q)   front=0;
      return ret_val;
  }
  bool empty(){return (front==back);}
};
 
 
void fill(queue* buffer){
    int n;
    struct node* new_elem;
    srand(time(NULL));
    cout<<"input n of elems:";
    cin>>n;
    cout<<"elements are:";
    while(n--)
    {
        new_elem=new node(rand()%90+10);
        cout<<(new_elem->value)<<", ";
        buffer->push_back(new_elem);
    }
    cout<<endl;
}
node* build_tree(queue* buffer){
    node* a;
    node* b;
    node* parent_of_a_b;
 
    while (!buffer->empty()){
        a=buffer->pop_front();
        if (buffer->empty())
            return a;
        b=buffer->pop_front();
        parent_of_a_b=new node(max(a->value, b->value));
        parent_of_a_b->left=a;
        parent_of_a_b->right=b;
        parent_of_a_b->level=max(a->level, b->level)+1;
        buffer->push_back(parent_of_a_b);    
    }
 
}
void print_level(int lvl, node* root){
    if (root->level>lvl){
        print_level(lvl, root->left);
        print_level(lvl, root->right);
    }
    else{
        if (root->level==lvl){
            cout<<root->value;
            for (int i=0; i<4*(1<<lvl)-2; i++)
                cout<<" ";
        }
    }
 
}
void print_tree(node* root){
    cout<<"THE TREE:"<<endl;
    for (int i=(root->level); i>=0; i--){
        for (int j=0; j<2*(1<<i)-2; j++)
            cout<<" ";
        print_level(i, root);
        cout<<endl;
    }
}
int main() // Оcновное тело программы
{
    queue buffer;
    node* root;
    fill(&buffer);
    root=build_tree(&buffer);
    print_tree(root);
    system("PAUSE");
}
 
Текущее время: 03:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru