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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kuraga
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 9
#1

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

06.05.2013, 18:23. Просмотров 740. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 18:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос класс, реализующий линейный односвязный список (C++):

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

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

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

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

Создать односвязный линейный список - C++
Доброго времени суток! Помогите пожалуйста с кодом программы: Нужно создать односвязный линейный список, считывание значений элементов...

Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке - C++
Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 18:23
Привет! Вот еще темы с ответами:

Добавление элементов в односвязный линейный список - C++
Всем добрый день! Написала функцию, которая добавляет элементы в список, причем каждый элемент добавляется по принципу, чтобы список был...

Создать линейный односвязный (двухсвязный) список - C++
Помогите пожалуйста решить задачу: Создать линейный односвязный (двухсвязный) список. Из списка удалить последнюю пару соседних...

Линейный односвязный список и Бинарное дерево - C++
Необходимо написать программу, но вот что-то затрудняюсь 1.Два линейных односвязных списка заданы указателями на первый элемент. Целые...

Что такое линейный односвязный список? - C++
Люди, помогите разобраться со связными структурами данных, а именно с линейным односвязным списком. Очень-очень нужно написать...


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

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

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