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

Реализация очереди на основе связанного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удаление узла из бинарного дерева http://www.cyberforum.ru/cpp-beginners/thread1205005.html
Здравствуйте!пишу функцию для удаления узла из бинарного дерева.. если узел не имеет потомков или имеет один потом то удаляет нормально, а если имеет два потомка то вылетает программа. не могу найти ошибку:cry: (С++) node *delet(node *root,int nomer,char avtor,char nazvanie,int god,int kolichestvo){ node *P=new node, *v=new node; if (root) //cout << "net takou knigi" << endl; ...
C++ Построить третий вектор на основе двух по правилу Написать программу, которая для двух заданных векторов X и Y одинаковой длиной n сформирует и выведет на экран вектор R той же длины,элементы которого определяются как ri= система Xi+Yi, если Xi>Yi Xn-1-i +Yn-1-i, если Xi<Yi, Xi+Yn-1-i, иначе http://www.cyberforum.ru/cpp-beginners/thread1205000.html
C++ Даны вещественные массивы F[4][5], A[4][5]
Даны вещественные массивы F, A. Определить значения массивов X,V, где X=максимальному отрицательному значению i-й строки массива F, V=максимальному отрицательному значению i-й строки массива A. Значение переменной i изменяется от 0 до 3.
C++ Даны вещественные массивы A[8], B[8], C[8]
Даны вещественные массивы A, B, C. Определить значения вещественного массива D. В первую строку массива D записать значения массива A, во вторую - массива В, а в 3-ю - массива С.
C++ Разделить строки по 20 символов, либо по точкам http://www.cyberforum.ru/cpp-beginners/thread1204987.html
Задан текстовый файл f1. Сформировать файл f2 из файла f1, разбивая его строки так, чтобы каждая строка оканчивалась точкой, либо содержала 20 символов если среди них нет точки.
C++ Реализовать программу, работающую с бинарным файлом, который содержит записи о товарах Увожаемые форумчане! Вдруг у кого есть похожая программа на C++ просьба скинуть за небольшое вознаграждение :) Реализовать программу, работающую с бинарным файлом, который содержит записи о товарах. Каждая запись – структура с полями: • Наименование товара • Цена • Количество на складе Интерфейс должен позволять: • Вносить новые записи • Просматривать содержимое файла подробнее

Показать сообщение отдельно
Aecttann
 Аватар для Aecttann
5 / 5 / 0
Регистрация: 19.10.2013
Сообщений: 257
10.06.2014, 22:11     Реализация очереди на основе связанного списка
Реализация очереди на основе связанного списка

в строках хэдэра
C++
1
2
   tmp->ch.name = ch1.name;
   tmp->ch.surname = ch1.surname;
получаю ошибки
C:\Program Files\CodeBlocks\Projects\ocheredkakte\Untitled1.h||In member function 'void Queue :: push(Chuvak)':|
C:\Program Files\CodeBlocks\Projects\ocheredkakte\Untitled1.h|39|error: invalid array assignment|
C:\Program Files\CodeBlocks\Projects\ocheredkakte\Untitled1.h|40|error: invalid array assignment|

и в главной:

C++
1
ch[k-1].surname = s;
C:\Program Files\CodeBlocks\Projects\ocheredkakte\main.cpp||In function 'int main()':|
C:\Program Files\CodeBlocks\Projects\ocheredkakte\main.cpp|42|error: incompatible types in assignment of 'char' to 'char [25]'|

хэд:
Кликните здесь для просмотра всего текста
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
#ifndef UNTITLED1_H_INCLUDED
#define UNTITLED1_H_INCLUDED
#include <iostream>
#include <string.h>
#include <iomanip>
 
using namespace std;
 
int size=0;
 
class Chuvak
{
    public:
    char name[25];
    char surname [25];
    int year;
};
 
class Node
{
    public:
    Chuvak ch;
    Node *next;
};
 
class Queue
{
    public:
    Node *top = new Node;
 
 
void push(Chuvak ch1)
{
 
    Node *tmp = new Node;
    strcpy(tmp->ch.name,ch1.name);
    strcpy(tmp->ch.surname,ch1.surname);
 //   strcpy(tmp->ch.year,ch1.year);
    tmp->ch.name = ch1.name;
    tmp->ch.surname = ch1.surname;
    tmp->ch.year = ch1.year;
    tmp->next = top;
    top=tmp;
 
    size ++;
 
}
 
 
void *pop()
{
    Node *pv = top;
    top = top->next;
                  // освобождаем память, тем самым удалили вершину
         cout<<endl<<"Ty ubral ne togo parnya "<<endl<<pv->ch.surname<<") "<<pv->ch.name<<" "<<endl;
         size--;                 //Вывод текущего элемента на экран
       delete pv;                     // возвращаем значение, которое было в вершине
}
 
void *Show()
{
    cout<<"Est` cho v razmere: "<<size<<endl;
    Node *pv=top;
    int g=0;
    while(g<size)
    {
        cout << pv->ch.surname << ") " << pv->ch.name <<"  "<<endl;
        pv=pv->next;
       g++;
    }
 
}
 
void *find(char d[])
{
     Node *pv=top;
     int c=0;
    while(pv->next)
    {
        if((strcmp(d,pv->ch.name)==0||(strcmp(d,pv->ch.surname)==0)))
           {
               cout<<") "<<pv->ch.name<<pv->ch.surname<<" "<<endl;
               c++;
           }
        pv=pv->next;
    }
    if(strcmp(d,pv->ch.name)==0||(strcmp(d,pv->ch.surname)==0))
           {
               cout<<") "<<pv->ch.name<<pv->ch.surname<<" "<<endl;
               c++;
           }
           if(c==0)
            cout<<endl<<"Ty iskal ne togo chuvaka";
 
}
};
#endif // UNTITLED1_H_INCLUDED


главная:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include "Untitled1.h"
 
int main()
{
    int z=1,k=1,n=5;
    Queue mn;
    Chuvak *ch;
    ch=new Chuvak[n];
strcpy( ch[0].name,"Пелевин");
strcpy( ch[0].surname, "Витёк");
//strcpy( ch[0].year, "1995");
 
    mn.push(ch[0]);
    k++;
 
strcpy( ch[k-1].name,"Булгаков");
strcpy( ch[k-1].surname, "Мишаня");
//strcpy( ch[k-1].year, "1994");
 
    mn.push(ch[k-1]);
    k++;
 
    int inn=0;
    int s_pop,i,ask;
    char s;
    char d[15],*form[3];
    while(z==1)
    {
        mn.Show();
        cout<<endl<<"______________________________________________"<<endl<<endl;
        cout<<"Hochew` vt0lknut` chuvaka? 1 - DA   2- NE :"<<endl;
        cin>>inn;
            if(inn==1)
            {
                cout<<endl<<" Enter name :";
                cin>>d;
                strcpy(ch[k-1].name,d);
 
                cout<<endl<<"Enter surname = ";
                cin>>s;
                ch[k-1].surname = s;
 
                mn.push(ch[k-1]);
                k++;
 
                mn.Show();
                cout<<endl<<"______________________________________________"<<endl<<endl;
            }
 
    cout<<endl<<"Do you want to pop ?  1 - YES   2- NO : "<<endl;
    cin>>s_pop;
    if(s_pop==1)
    {mn.pop();
    k--;
    }
 
cout<<endl<<"______________________________________________"<<endl<<endl;
 
    cout<<endl<<"Do you want to find something?  : 1 - YES   2- NO : ";
    cin>>ask;
    if(ask==1)
    {
        cout<<endl<<"Enter the key for search - ";
        cin>>d;
        mn.find(d);
    }
 
cout<<endl<<"______________________________________________"<<endl<<endl;
 
 
    cout<<endl<<"Want more? : 1 - YES   2- NO : "<<endl;
    }
 
    return 0;
}


Добавлено через 2 минуты
Если нужно полное задание:
Кликните здесь для просмотра всего текста
На базе класса Queue (очередь на основе связанного списка) необходимо реализовать простую базу данных. Для реализации базы данных можно создать свой класс, который необходимо унаследовать от класса Queue. База данных предназначена для хранения информации о студентах, имеющих задолженности по предметам. Элемент базы данных включает несколько полей: 1) фамилия 2)имя 3) год рождения. База данных должна позволять добавлять и удалять элементы (по правилу FIFO), выводить информацию о студентах на экран, а также выводить на экран информацию по сформированному к ней запросу.
В данном случае запрос заключается в поиске элементов списка содержащих в одном из полей какое-то конкретное значение. Поле, по которому осуществляется поиск, называется ключевым. Ключевым может быть любое из трех полей. Например, база включает 3 элемента: 1) Пелевин Виктор 1995; 2) Булгаков Михаил 1994; 3) Веллер Михаил 1996. Запрос осуществляется по полю “имя” со значением “Михаил”. В ответ на поисковый запрос база выведет на экран информацию о двух элементах: Булгаков Михаил 1994; Веллер Михаил 1996.
Для работы с базой данных необходимо реализовать консольное меню, которое должно обеспечивать ввод данных в базу, удаление данных из базы, поиск информации в базе, вывод данных базы на экран, предложение пользователю выйти из программы или продолжить работу.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru