Здравствуйте! Обращаюсь к Вам за помощью . Начал учить списки в с++, односвязные , и стоит задача создать список ,вывести его на экран , а потом поменять два каких либо элемента (любых , не имеет значения) местами( вместе с информацией о элементе списка ) и вывести новый список на экран . Пока только есть ввод элементов и вывод на экран , но как поменять местами элементы списка - я ума не приложу (.
Помогите , пожалуйста , с этим вопросом , очень нужна помощь , в интернете искал что-то похожее , но , увы-ничего не получается , не понятно .(
Заранее огромное спасибо за Вашу помощь !
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
| #include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
struct People
{ char Name [20];
int Age;
int Year;
};
struct TList
{ People info; //інформаційне поле
TList *next; //адреса наступного елемента
};
class CList
{ TList *head; //адреса голови списку
public:
CList()
{ head =new TList;//выделяем память голове списка
head=NULL;
};
void ReadConsole() //ввод данных с клавиатуры
{ int i=0;
char nam[20];//для новых введённых элементов
int a;
int y;
TList *pv,*pn;//указатели на новые элементы
int flag;
cout<<"\n Введите элементы списка "<<endl;
cout<<"\n Введите имя :";
cin>>nam;
cout<<"\n Введите возраст :";
cin>>a;
cout<<"\n Введите год рождения :";
cin>>y;
head=Head(nam,a,y);
cout<<"\n Продолжать ?Для продолжения введите 1"<<endl;
cout<<"\n";
cin>>flag;
if (flag==1){
cout<<"\n Введите элементы списка "<<endl;
cout<<"\n Введите имя :";
cin>>nam;
cout<<"\n Введите возраст :";
cin>>a;
cout<<"\n Введите год рождения :";
cin>>y;
pv=Head(nam,a,b);//выделяем память для второго эл. списка
head->next=pv;//записываеи адресс 2-го эл. в предыдущий элемент
do{
cout<<"\n Продолжать ?Для продолжения введите 1"<<endl;
cout<<"\n";
cin>>flag;
if(flag==1){
cout<<"\n Введите элементы списка "<<endl;
cout<<"\n Введите имя операционной системы :";
cin>>nam;
cout<<"\n Введите розрядность операционной системы :";
cin>>roz;
cout<<"\n Введите минимальный объём памяти :";
cin>>op;
pn=Head(nam,a,b);
pv->next=pn;//для следущего элемента
}
else break;
pv=pn;//для новых эл.
}while (1);
}
};
void WriteMonitor()//вывод данных на экран
{ TList *pv,*pn;
if(head !=NULL){ //если есть адресс
int i=2;
WrM(head);
pv=head->next;
while (pv!=NULL)//до конца списка
{
WrM(pv);
pn=pv->next;
pv=pn;
}
}
else cout<<"\n Список пуст";
};
TList *Head(char nam[20],int a, int y)//функция для размещения элемента списка в памяти
{ TList *pv =new TList;
for(int j=0;j<20;j++)
pv->info.Name[j]=nam[j];
pv->info.Age=a;
pv->info.Year=y;
pv->next=NULL;
return pv;
};
void WrM(TList *pv) //вывод на экран
{ cout<<pv->info.Name<<" ";
cout<<pv->info.Age<<" ";
cout<<pv->info.Year<<endl;
};
} |
|