Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
1

Линейный список. Картотека

23.03.2013, 18:34. Показов 4843. Ответов 60
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Картотека:
Адрес
Номер
Тип

Для представления картотеки в ОП ПЭВМ воспользоваться структурой данных – ЛОС (линейный однонапр список). В программе предусмотреть:
- поиск элемента ЛоС по ключу;
- вставку элемента в ЛоС;
- удаление элемента из ЛоС;
- вывод картотеки на принтер.
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
145
146
147
148
149
150
151
152
153
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<iomanip.h>
#define n 3
class los
{int b;
int numb;
char adres[20];
char tip[20];
los *next;
public:
static los*p;
void input();
void output();
void search();
void del();
void add();
};
los*los::p;
void los::input()
{los *r;
p=new los;
cout<<"\n Key 1: ";
cin>>p->b;
cout<<"\n № magazina 1: ";
cin>>p->numb;
cout<<"\n Adres 1: ";
gets(p->adres);
cout<<"\n Tip magazina 1: ";
gets(p->tip);
p->next = NULL;
r=p;
for(int i=0; i<n-1; i++)
{clrscr();
r = r->next;
r=new los;
cout<<"\n Key "<<(i+2)<<": ";
cin>>r->b;
cout<<"\n № magazina "<<(i+2)<<": ";
cin>>r->numb;
cout<<"\n Adres "<<(i+2)<<": ";
gets(r->adres);
cout<<"\n Tip magazina "<<(i+2)<<": ";
gets(r->tip);
r->next=NULL;
getch();
}
void los::output()
{clrscr();
lds *r;
r=p;
cout<<"\n"<<"ЪДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДї";
cout<<"\n"<<"і"<<setw(5)<<"Key"<<"і"<<setw(10)<<"Numb"<<"і"<<setw(15)<<"Adres"<<"і"<<setw(10)<<"Tip"<<"і";
cout<<"\n"<<"ГДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДґ";
while(r!=NULL)
{cout<<"\n"<<"і"<<setw(5)<<r->b<<"і"<<setw(10)<<r->numb<<"і"<<setw(15)<<r->adres<<"і"<<setw(10)<<r->tip<<"і";
r=r->next;}
cout<<"\n"<<"АДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДЩ";
getch();
}
void los::search()
 {clrscr();
  los *r;
  int key;
  cout<<"\n Vvedite kluch dlya poiska: ";
  cin>>key;
  r=p;
 
 while(r != NULL && r->b != key)
  r=r->next;
if(r->b==key)
{cout<<"\n"<<"ЪДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДї";
cout<<"\n"<<"і"<<setw(5)<<"Key"<<"і"<<setw(10)<<"Numb"<<"і"<<setw(15)<<"Adres"<<"і"<<setw(10)<<"Tip"<<"і";
cout<<"\n"<<"ГДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДґ";
  cout<<"\n"<<"і"<<setw(5)<<r->b<<"і"<<setw(10)<<r->numb<<"і"<<setw(10)<<r->adres<<"і"<<setw(10)<<r->tip<<"і";
  cout<<"\n"<<"АДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДЩ";
  }
else
 cout<<"\n Nichego ne najdeno.";
getch();
}
void los::del()
 
  
getch();
}
void lds::add()
{clrscr();
los *r;
los *ptr;
ptr=new los;
int key;
cout<<"\n Vvedite kluch elementa posle kotorogo dobavit' novij: ";
cin>>key;
r=p;
while(r != NULL && r->b != key)
r = r->next;
if(r->b == key)
   {if(r->next != NULL)
       {cout<<"\n Dobavlenie: ";
    cout<<"\n Vvedite kluch novogo magazina: ";
    cin>>ptr->b;
    cout<<"\n Vvedite number novogo magazina: ";
    cin>>ptr->numb;
    cout<<"\n Vvedite adres  novogo magazina: ";
    gets(ptr->adres);
    cout<<"\n Vvedite tip novogo magazina: ";
    gets(ptr->tip);
    ptr->next = r->next;
    r->next = ptr;
       }
    else
       {cout<<"\n Dobavlenie: ";
    cout<<"\n Vvedite kluch novogo magazina: ";
    cin>>ptr->b;
    cout<<"\n Vvedite number novogo magazina: ";
    cin>>ptr->numb;
    cout<<"\n Vvedite adres  novogo magazina: ";
    gets(ptr->adres);
    cout<<"\n Vvedite tip novogo magazina: ";
    gets(ptr->tip);
    ptr->next=NULL;
    r->next=ptr;
       }
   }
getch();
}
void menu()
{clrscr();
cout<<"\n 1-Vvod dannih";
cout<<"\n 2-Vivod dannih";
cout<<"\n 3-Poisk dannih po kluchu";
cout<<"\n 4-Udalenie dannih po kluchu";
cout<<"\n 5-Vstavka dannih posle elementa";
cout<<"\n ESC-vihod iz programmi";
}
void main()
{clrscr();
 char punkt;
 while(punkt!=27)
 {menu();
  punkt=getch();
  clrscr();
  switch(punkt)
  {case '1':input();getch;break;
   case '2':output();getch;break;
   case '3':search();getch();break;
   case '4':del();getch();break;
   case '5':add();getch();break;
  }
 }
}
Вот собственно код.Не могу сделать удаление и добавление.А из 3 магазинов выводится только первый .Помогите пожалкйста!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2013, 18:34
Ответы с готовыми решениями:

Создать линейный список "Картотека абонентов"
На междугородной телефонной станции картотека абонентов, содержащая сведения о телефонах и их...

Вставить в линейный список перед элементом с заданным значением другой линейный список
Как можно вставить в линейный список перед элементом с заданным значением другой линейный список?...

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

Линейный список
Есть такая детская считалка: n детей стали в круг. Начиная отсчет от первого, убирают каждого k-го...

60
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 21:17 41
Author24 — интернет-сервис помощи студентам
евг, ключ можно ввести в обычную переменную типа int, а потом от головы списка идти и просматривать ключи элементов.
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 21:20  [ТС] 42
ну то есть я ввожу ключ,а потом находим такой ключ и удаляем

Добавлено через 1 минуту
int key;
cout<<"\n Vvedite kluch dlya poiska: ";
cin>>key;

а при каком условии перейти к Вашему алгоритму,ну т е если ключ совпадает-удаляем
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 21:22 43
евг, я через час зайду
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 21:23  [ТС] 44
ок)я постараюсь,что-нибудь придумать пока.
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 22:02 45
евг, так, я не пойму, чем вам моя программа не нравится что вы изменяете ее?
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 22:06  [ТС] 46
нравится,даже очень но борланд не поддерживает большинство функций.
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 22:07 47
евг, какие именно? там все должно работать, давайте разберемся.
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 22:13  [ТС] 48
bool не поддерживает .!flag как то криво поддерживает
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 22:22 49
евг, смотрим

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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <locale>               //для работы с юникод 
#include <string>
using namespace std;
 
typedef int BOOL;
#define TRUE 1
#define FALSE 0
 
struct List
{
    List *next;
 
    int number;                         //Номер.
    wstring tip,                        //тип.
    adress;                             //aдрес.
 
    void EnterInf()                     //функция для инициализации элементов списка
    {
        wcout << L"Введите адрес: ";
            cin.ignore();
            getline(wcin, adress);
        wcout << L"Введите номер: ";
            cin >> number;
        wcout << L"Введите тип: ";
            cin.ignore();
            getline(wcin, tip);
 
        cout << endl;
    }
 
    void ShowInf()                      //функция выода содержимого эл-ов списка
    {
        wcout << L"\nAдрес: " << setw(10 - strlen("Aдрес")) << adress;
        wcout << L"\nHомер: " << setw(10 - strlen("Hомер")) << number;
        wcout << L"\nTип: " << setw(10 - strlen("Tип")) << tip << "\n";
    }
 
    int getNumber()                     //функция получения номера эл-а списка(ключ)
    {
        return number;
    }
};
 
class ListNode
{
    private:
        List *Head;                     //голова списка
 
    public:
        ListNode()                      //конструктор по умолчанию
        {
            Head = NULL;                //изначально список пустой
        }
 
        void addToBack()        //добавляем в конец
        {
            List *Ptr = new List;       //выделяем память
            Ptr -> EnterInf();          //инициализируем
            Ptr -> next = NULL;
 
            if(Head == NULL)            //если список пустой
            {
                Head = Ptr;
            }
            else                        //иначе добавляем в конец
            {
                List *Ptr_f = Head; 
 
                while(Ptr_f -> next != NULL)        //ищем последний элемент
                    Ptr_f = Ptr_f -> next;
 
                Ptr_f -> next = Ptr;                //последний указывает на новый
                Ptr -> next = NULL;
            }
        }
 
        void removeFromBack()
        {
            List *temp;
 
            if(Head == NULL)                    //если список пуст
                wcout << L"Список пуст!\n";
            else if(Head -> next == NULL)       //если в списке один элемент
            {
                delete Head;
                Head = NULL;
            }
            else                                //если несколько элементов
            {
                List *Ptr_f = Head;
                while(Ptr_f -> next != NULL)        //ищем последний
                {
                    temp = Ptr_f;
                    Ptr_f = Ptr_f -> next;
                }
 
                delete Ptr_f;                   //удаляем последний
                temp -> next = NULL;                //элемент перед последним теперь последний
            }
        }
 
        void showCard(const int &_number)
        {
            List *current = Head;
            BOOL flag = FALSE;
 
            if(Head -> next != NULL)                //ищем во всем списке
            {
                while(current -> getNumber() != _number && current -> next != NULL)
                {
                    if(current -> getNumber() == _number)
                    //если ключ найден выводим информацию
                    {
                        flag = TRUE;
                        wcout << L"Информация о карточке: ";
                            current -> ShowInf();
 
                        break;      //прекращаем цикл, так как ключ уникален
                                    //и больше совпадений не будет
                    }
 
                    current = current -> next;
                }
            }
 
            if(!flag)                                   //если ключ не найден
                wcout << L"Карточка не найдена!\n";
 
            cout << endl;
        }
 
        void removeByKey(int const value)
        //ключом будет номер карточки(т.к. он уникален)
        {
            List *current = Head;
 
            if(value == Head -> getNumber())    //если искомый ключ в первом эл-те
            {
                List *tmp = Head -> next;       //переменная иници эл-ом после головы
                delete Head;                    //удаляем голову
 
                wcout << L"Карточка успешно удалена!\n\n";
 
                Head = tmp;                     //голова равна следующему
            }
            else
            {
                List *temp = NULL;
                bool flag = false;
 
                while(current != NULL)
                //ищем во все списке
                {
                    if(current -> getNumber() == value)
                    //если ключ найден
                    {
                        flag = true;    
                        break;          //прекращаем поиск
                    }
             
                    temp = current;                 //предыдущий эл-т
                    current = current -> next;      //удаляемый эл-т
                }
                
                if(!flag)                                   //если ключ не найден
                    wcout << L"Карточка не найдена!\n\n";
                else
                {
                    temp -> next = current -> next;     //предыдущ указывает на эл-т
                                                        //после удаляемого
                    delete current;                     //удаляем нужный
 
                    wcout << L"Карточка успешно удалена!\n\n";
                }
 
            }
 
        }
 
        void showItem()                     //выводим весь список
        {
            List *current = Head;
            if(current == NULL)             //если список пустой 
                wcout << L"Список пуст!";
            else                            //иначе выводим до конца
            {
                wcout << L"Список: ";
                while(current != NULL)
                {
                    current -> ShowInf();
                    current = current -> next;          //переходим на следующий
                }
            }
 
            cout << endl;
        }
};
 
void instructions();                    //инструкция к меню
void Menu();                            //меню
 
int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(".866"));            //для вывода юникод строк
    wcin.imbue(locale(".866"));             //для ввода юникод строк
 
    Menu();                                 //вызываем функцию меню
 
    cout << "\n\n";
    return 0;
}
 
void Menu()
{
    ListNode Univers;
    int choice, value;
 
    instructions();                     //вызываем функцию инструкции к меню
 
    do{
        cout << "? ";
            cin >> choice;              //выбираем пункт меню
 
        switch(choice)
        {
            case 1:
                Univers.addToBack();
                Univers.showItem();
                break;
            case 2:
                Univers.removeFromBack();
                Univers.showItem();
                break;
            case 3:
                wcout << L"Введите номер карточки: ";
                    cin >> value;
 
                Univers.showCard(value);
                break;
            case 4:
                wcout << L"Введите ключ карточки: ";
                    cin >> value;
 
                Univers.removeByKey(value);
                break;
        }
    }while(choice != 5);
 
    wcout << L"Конец работы со списком!\n";
}
 
void instructions()
{
    wcout << L"Выберите:\n" <<
        L"1 - Добавить в список\n" <<
        L"2 - Удалить из списка\n" <<
        L"3 - Поиск по номеру\n" <<
        L"4 - Удаление по ключу\n" <<
        L"5 - Завершить обработку списка\n";
}
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 22:38  [ТС] 50
странно)тогда я не пойму в чем дело.почему она не работает?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 22:40 51
евг, работает?
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 23:09  [ТС] 52
нет(
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 23:16 53
евг, теперь что?
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 23:16  [ТС] 54
а как связать ключ key с вашей прогой?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 23:18 55
евг, я тебе уже bool заменил на int, что еще не нравится?
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 23:22  [ТС] 56
нверное,я уже не соображаю
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 23:24 57
евг, ты покажи какие ошибки выдает.
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 23:26  [ТС] 58
ну по удалению у меня выводит card not found

Добавлено через 38 секунд
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
void los::del()
{clrscr();
 
int  value;
int fl=0;
los *ptr;los *cur;los *tmp;
int key;
  cout<<"\n Vvedite kluch dlya poiska: ";
  cin>>key;
cur=head;
if (value==head->getNumber())
{
tmp=head->next;
delete(head);
head=tmp;
}
else
{
tmp=NULL;
fl=0;
while(cur!=NULL)
  {
    if (cur->getNumber()==value)
      {
    fl=1;
    break;
      }
   tmp=cur;
   cur=cur->next;
  }
  if(!fl)
    cout<<"\n Card not found";
  else
  {
   tmp->next=cur->next;
   delete(cur);
  }
 }
}
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
24.03.2013, 23:28 59
евг, я тебе дал свой код, исправил булевый тип на целый, что ты его не пробуешь, твой код невозможно читать.
0
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
24.03.2013, 23:32  [ТС] 60
я попробую.большое Вам спасибо за время и старание!
0
24.03.2013, 23:32
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.03.2013, 23:32
Помогаю со студенческими работами здесь

Линейный список
Нужно написать курсовую по с++, не используя стандартных методов. Подскажите пожалуйста, с чего...

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

Однонаправленный линейный список
здравствуйте! помогите помочь написать задача или киньте ссылку по её решению. &quot;однонаправленный...

Вывести линейный список
Необходимо создать линейный список упорядоченный по фамилиям и вывести его на экран. Код вроде...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru