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

Циклический двунаправленный список переделать в однонаправленный - C++

19.12.2015, 17:37. Просмотров 183. Ответов 1
Метки нет (Все метки)

Не могу никак из циклического двунаправленного переделать в однонаправленный список.
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
//---------------------------------------------------------------------------
#include <stdio.h>
#include <vcl.h>
#pragma hdrstop
 
typedef struct Tinstrument  {
 
unsigned int ID;
char SName[10];
char Amount;
 
Tinstrument *next;
 
}   Tinstrument;
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
    Tinstrument *list,
   *cur,
   *del,
   *last;
   list=last=NULL;
int d;
while(1) {
    printf("Nomer deystviya (0-Vyhod; 1-Vvod; 2-Vyvod; 3-Poisk;\n"
    "4-Udalenie): ");
    scanf("%d", &d);
    printf("\n");
    switch(d) {
        case 0:
        cur=list;
        if (list!=NULL)
         do {
        del=cur;
        delete del;
        cur=cur->next;
         } while (cur!=list);
        return 0;
 
        case 1:
        cur=last;
        if (list==NULL)
        {
        list=new Tinstrument;
        list->next=last;
        last=cur=list; }
        else {
        cur->next=new Tinstrument;
        cur->next=list;
        last=cur; }
        printf("Vvedite ID SName Amount  "
        "(cherez probel):\n");
        scanf("%u %s %c", &cur->ID, cur->SName, &cur->Amount);
        printf("\n");
        break;
 
        case 2:
        cur=list;
        printf("%6s %9s %5s\n", "ID", "SName", "Amount" );
 
         do {
        printf("%6u %9s %5c\n", cur->ID, cur->SName, cur->Amount );
        cur=cur->next;
         } while (cur!=list);
        printf("\n");
        break;
 
        case 3:
        char key;
        printf("Stroka dlya poiska po polu ID: ");
        scanf("%s", &key);
        cur=list;
        printf("%6s %9s %5s\n", "ID", "SName", "Amount" );
        if (list!=NULL)
         do {
             if (cur->ID,key)
              printf("%6u %9s %5c\n", cur->ID, cur->SName, cur->Amount );
              cur=cur->next;
         } while (cur!=list);
        printf("\n");
        break;
 
        case 4:
        int n;
        printf("Vvedite nomer udalyaemoy stroki: ");
        scanf("%d", &n);
        if (list->next==list) {
        delete list;
        list=last=NULL; }
        else
        if (n==1) {
        del=list;
        list=list->next;
        delete del; }
        else {
        cur=list;
        for (int i=3; i<=n; i++)
         cur=cur->next;
        del=cur->next;
        cur->next=del->next;
        delete del;
        if (cur->next==NULL)
        last=cur; }
        printf("Stroka %d uspeshno udalena. \n", n);
        printf("\n");
        break;
        default:
         printf("Nevernyi nomer deistviya.\n");
         printf("\n");
        }
    }
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2015, 17:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Циклический двунаправленный список переделать в однонаправленный (C++):

Изменить двунаправленный список на однонаправленный
Добрый день, сильно нужна помощь, есть двунаправленный список, необходимо из...

Добавить в однонаправленный (двунаправленный) список элемент с заданным номером
Добавить в однонаправленный (двунаправленный) список элемент с заданным номером

Циклический двунаправленный список
Имеется циклический двунаправленный список содержащий числа 1,3,5,6,7,9,8,11 ....

Циклический однонаправленный список
Циклический однонаправленный список, упорядоченный по убыванию. Хотелось бы...

Линейный циклический однонаправленный список
Задание организовать очередь с приоритетом (у каждого элемента свой приоритет)....

Циклический двунаправленный список с заглавным звеном
Вот такое вот лихое задания. Пусть L обозначает кольцевой (циклический)...

1
olya7
489 / 306 / 231
Регистрация: 18.02.2013
Сообщений: 738
19.12.2015, 18:15 #2
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
#include <stdio.h>
 
#pragma hdrstop
 
typedef struct Tinstrument {
 
unsigned int ID;
char SName[10];
char Amount;
 
Tinstrument *next;
 
} Tinstrument;
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
Tinstrument *list,
*cur,
*del,
*last;
list=last=NULL;
int d;
while(1) {
printf("Nomer deystviya (0-Vyhod; 1-Vvod; 2-Vyvod; 3-Poisk;\n"
"4-Udalenie): ");
scanf("%d", &d);
printf("\n");
switch(d) {
case 0:
cur=list;
if (list!=NULL)
do {
del=list;
list=del->next;
delete del;
cur=list;
} while (cur!=NULL);
return 0;
 
case 1:
 
 
cur=new Tinstrument;
cur->next=list;
list=cur;
printf("Vvedite ID SName Amount "
"(cherez probel):\n");
scanf("%u %s %c", &cur->ID, cur->SName, &cur->Amount);
printf("\n");
break;
 
case 2:
cur=list;
printf("%6s %9s %5s\n", "ID", "SName", "Amount" );
 
do {
printf("%6u %9s %5c\n", cur->ID, cur->SName, cur->Amount );
cur=cur->next;
} while (cur!=NULL);
printf("\n");
break;
 
case 3:
unsigned int key;
printf("Stroka dlya poiska po polu ID: ");
scanf("%6u", &key);
cur=list;
printf("%6s %9s %5s\n", "ID", "SName", "Amount" );
if (list!=NULL)
do {
if (cur->ID==key)
printf("%6u %9s %5c\n", cur->ID, cur->SName, cur->Amount );
cur=cur->next;
} while (cur!=NULL);
printf("\n");
break;
 
case 4:
int n;
printf("Vvedite nomer udalyaemoy stroki: ");
scanf("%d", &n);
/*if (list->next==list) {
delete list;
list=last=NULL; }
else*/
if (n==1) {
del=list;
list=list->next;
delete del; }
else {
cur=list;
for (int i=2; i<n; i++, cur=cur->next) ;
printf("%6u %9s %5c\n", cur->ID, cur->SName, cur->Amount );
del=cur->next;
cur->next=del->next;
delete del;
/*if (cur->next==NULL)
last=cur; }*/
 
printf("Stroka %d uspeshno udalena. \n", n);
printf("\n");
break;
default:
printf("Nevernyi nomer deistviya.\n");
printf("\n");
}
}
}
}
 
//---------------------------------------------------------------------------
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2015, 18:15
Привет! Вот еще темы с решениями:

Циклический двунаправленный список, упорядоченный по убыванию
Циклический двунаправленный список, упорядоченный по убыванию.

Однонаправленный список не могу переделать!!!
Огромная просьба помочь с реализацией однонаправленного списка. Так то список...

Однонаправленный список: переделать код под консоль
Имеется три файла, помогите пожалуйста, мне нужно эту задачу реализовать в...

Как переделать двусвязный список в циклический c++
Как переделать двусвязный список в циклический c++


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

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

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