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

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

Восстановить пароль Регистрация
 
kuraga
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 9
06.05.2013, 18:23     класс, реализующий линейный односвязный список #1
Разработайте класс, реализующий линейный односвязный список. Методы класса: вставка элемента после 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;
}
проблема в функции удаления. Не могу разобраться в чем дело
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 18:23     класс, реализующий линейный односвязный список
Посмотрите здесь:

C++ Линейный односвязный список
список линейный односвязный C++
Односвязный линейный список C++
C++ Линейный односвязный список
Cоздать класс-шаблон, реализующий односвязный список C++
Создать класс-шаблон, реализующий односвязный список C++
C++ Линейный односвязный список
Линейный односвязный список C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru