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

класс, реализующий линейный односвязный список - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача на рекурсию. Найти кратчайшее расстояние между городами i и j даже если между ними нет прямой дороги http://www.cyberforum.ru/cpp-beginners/thread857582.html
Дана матрица размером NxN с расстояниями между городами при наличии прямой дороги между ними. По вертикали содержаться города откуда выезжаем, по горизонтали – куда. На пересечении - расстояние по прямой дороге. Если прямой дороги нет, в соответствующем элементе матрицы записывается число “-1”. Найти кратчайшее расстояние между городами i и j даже если между ними нет прямой дороги. любая...
C++ Найти ошибку в коде Скажите, пожалуйста, в чем у меня ошибка? Вот код #include <iostream> #include <cmath> #include <locale> #include <conio.h> const float PI = 3.141592; /*class Error{ http://www.cyberforum.ru/cpp-beginners/thread857568.html
задача на файловый ввод-вывод C++
Помогите решить задачку: Создать текстовый файл, содержащий вещественные значения, следующего формата 5.3 21.4 37.4 52.6 9.2 … . Считать из файла записанные данные и определить максимальное значение. Если оно находится в первой половине файла, записать в другой файл сумму следующих за ним элементов, если во второй – сумму предыдущих элементов.
C++ Массив-ссылка на некоторые элементы другого массива
У меня тут возникла идея. Есть большой двумерный массив, но не все строки этой матрицы нам нужны. Индексы нужных строк записаны в другой массив. //большая матрица int a; //нужные индексы int index; //тут неверно, так как объявили без присваивания int& b;
C++ Где кодоблоки по дефолту ищут головы? http://www.cyberforum.ru/cpp-beginners/thread857500.html
Предположим, есть строчка #include <string>. Из какого каталога эта голова инкладится? Где эта настройка валяется?
C++ Сформировать новый массив, состоящий только из нечетных элементов больших 3 и меньших 14 Всем привет! Как из одного созданного массива выбрать числа и записать их в новый массив? вот задание "сформировать новый массив, состоящий только из нечетных элементов больших 3 и меньших 14." Помогите, а то уже замучилась!:wall: подробнее

Показать сообщение отдельно
kuraga
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 9
06.05.2013, 18:23     класс, реализующий линейный односвязный список
Разработайте класс, реализующий линейный односвязный список. Методы класса: вставка элемента после n-го элемента списка, просмотр списка, удаление из списка каждого второго элемента. Поля записей: номер группы, имя ребенка, его возраст, домашний адрес.

код в сlass.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream>
#include<process.h>
#include<conio.h>
using namespace std;
class Student// описание студента
{
public://поля данных 
    char name[20];
    char address[20];
    int year;
    int group;
    Student *next;//конструктор класса инициализация полей
    Student()
    {
        strcpy(name,"");
        strcpy(address,"");
        year=0;
        group=0;
        next=NULL;
    }
};
class List//список студентов
{
public:
    Student *begin,*end;//поля данных
    List()//конструктор,инициализация обьектов 
    {
        begin=end=NULL;
    }
    ~List()//диструктор
    {
        
            Student *vsp;
            while(begin)
            {
                vsp=begin;
                begin=begin->next;
                delete vsp;
            }
        
    }
 
    void Add(void);// вставка элемента после n-го элемента списка
    void Show(void);// просмотр списка
    void Delete(void);//удалеение из списка каждого второго элеменнта   
    void menu(void)//вызов меню
    {
        int key=0;
        do
        {
 
              cout <<"MENU:"<<endl<<endl<<"\t1 - ADD"<<endl<<"\t2 - SHOW"<<endl<<"\t3-DELETE"<<endl
              <<"\tEsc - Exit"<<endl<<endl<< "Press any key..."<< endl;
              key=getch();
              switch(key)
              {
                  case 49: Add(); break;
                  case 50: Show(); break;
                  case 51: Delete();break;
 
              }
        }while(key!=27);
    }
};
 
 
void List::Add(void)//вставка
{   int n;
    Student *a;
    Student *vsp=new Student;// выд. память 
    if(vsp==NULL) exit(1);
    // присваиваем значение 
    cout<<"name="; cin>>vsp->name;
    cout<<"address="; cin>>vsp->address;
    cout<<"year=";cin>>vsp->year;
    cout<<"group="; cin>>vsp->group;
    if(begin==NULL)// если в списке нет элементов ставим элемент первым 
    {
        begin=vsp;
        //vsp->next=NULL;
        end=vsp;
    }
    else
    {
        cout<<"Enter n="<<endl;//после какого элемента вставить
        cin>>n;
        a=begin;
        while(a!=NULL&&n!=1)
        {
            a=a->next;
            n--;
        }
        if (a==NULL)// список закончился, вставка в конец
        { 
        //  vsp->next=NULL;
            end->next=vsp;
            end = vsp;
        }
        else if(n==1)//вставка после n-го
        {
            vsp->next=a->next;
            a->next=vsp;
        }
    }
}
 
void List::Show(void)//просмотр 
{
    Student *vsp;
    if(begin==NULL) 
    {
        cout<<"List is emly!\n";
        return;
    }
    vsp=begin;
    while(vsp!=NULL)
    {
        cout<<"\nname="<<vsp->name;
        cout<<"\naddress="<<vsp->address;
        cout<<"\nyear="<<vsp->year;
        cout<<"\ngroup="<<vsp->group;
        vsp=vsp->next;
    }
}
void List::Delete(void)
{
    Student *vsp,*rex;
    vsp=begin;
    if(begin==NULL)
    {
        cout<<"List is empty!\n";
        return;
    }
    while(vsp->next!=NULL&&vsp!=NULL)
    {
        {
            rex=vsp->next;
            vsp->next=vsp->next->next;
            vsp=vsp->next;
        }
        delete rex;
    }
    
}
код в *.cpp
C++
1
2
3
4
5
6
7
#include"class.h"
int main()
{
    List a;
        a.menu();
    return 0;
}
проблема в функции удаления. Не могу разобраться в чем дело
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru