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

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

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

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

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

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++
Доброго времени суток! Пробую реализовать односвязный линейный список в виде структуры. #include &lt;iostream&gt; #include &lt;cmath&gt; using...

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

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

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

Линейный односвязный список - выводится только одна запись - C++
Выводит только одну запись, в чем ошибка.. struct Node1 { string Region; int Temperature; int Davl; bool Rainfall; ...

Составить линейный односвязный список неповторяющихся слов из файла - C++
Написать программу, составляющую по символьному файлу линейный упорядоченный список неповторяющихся слов и вывести его. struct List ...

Вставка элемента в линейный односвязный список после заданного - C++
Я составила программу, но возникла проблема с реализацией вставки элемента после указанного значения. А точнее с составление функции,...

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


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

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

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