Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 9
1

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

06.05.2013, 18:23. Просмотров 1654. Ответов 0
Метки нет (Все метки)

Разработайте класс, реализующий линейный односвязный список. Методы класса: вставка элемента после 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;
}
проблема в функции удаления. Не могу разобраться в чем дело
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2013, 18:23
Ответы с готовыми решениями:

Cоздать класс-шаблон, реализующий односвязный список
Помогите новичку, пожалуйста, с такой задачей: необходимо создать класс-шаблон, реализующий...

Класс: "Одномерный целочисленный массив" (Линейный односвязный список)
Нужно разработать класс &quot;Одномерный целочисленный массив&quot; на базе линейного односвязного списка....

Односвязный линейный список
Текст помощи для не которой программы организован в виде линейного списка Каждая компонента текста...

Линейный односвязный список
void Read() { Node *cur = head; ifstream if_read; if_read.open(&quot;BDname.txt&quot;); if...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2013, 18:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Линейный односвязный список
Можете более понятным языком объяснить,что требуется в этом задании? Дана непустая...

Линейный односвязный список
List *begin = NULL; begin = new List; List *begin1 = NULL; begin1 = new List; List *begin2 =...

Линейный односвязный список
Помогите пожалуйста! 1) создать линейный односв список и вывести его 2)поменять местами макс и...

Линейный односвязный список
Ведомость абитуриентов, которые сдали вступительные экзамены в колледж, содержит Ф.И.О., адрес,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.