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

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

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

Как поменять местами элементы односвязного списка ? - C++

03.06.2013, 20:59. Просмотров 356. Ответов 0
Метки нет (Все метки)

Здравствуйте! Обращаюсь к Вам за помощью . Начал учить списки в с++, односвязные , и стоит задача создать список ,вывести его на экран , а потом поменять два каких либо элемента (любых , не имеет значения) местами( вместе с информацией о элементе списка ) и вывести новый список на экран . Пока только есть ввод элементов и вывод на экран , но как поменять местами элементы списка - я ума не приложу (.
Помогите , пожалуйста , с этим вопросом , очень нужна помощь , в интернете искал что-то похожее , но , увы-ничего не получается , не понятно .(

Заранее огромное спасибо за Вашу помощь !

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;
  };
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 20:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как поменять местами элементы односвязного списка ? (C++):

Поменять местами последний и предпоследний элементы односвязного списка - C++
Ребят, помогите, пожалуйста, реализовать ф-ию замены последнего и предпоследнего элементов местами в односвязном списке. #include...

Поменять местами два элемента односвязного списка - C++
Дан односвязный список. Требуется напечатать исходный список. Поменять местами два элемента списка, номера которых введёт пользователь с...

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

Поменять местами первый и последний элементы непустого списка - C++
Тема: динамические структуры: списки и очереди C++ Поменять местами первый и последний элементы непустого списка. Решить задачу для...

Поменять местами первый и последний элементы списка и удалить их средне арифметическое - C++
Помогите решить задачи пожалуйста!!! 1)Дан список, содержащие числовые данные. Поменять местами первый и последний элементы и удалить из...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 20:59
Привет! Вот еще темы с ответами:

Поменять два элемента односвязного списка - C++
Я где-то ошибся, и функция swap(smen2 -&gt; pNext, smen1 -&gt; pNext); в строке 123 ничего не меняет: #include &quot;stdafx.h&quot; #include &lt;iostream&gt;...

Распечатать все положительные элементы односвязного списка - C++
Привет всем! Мне в инсте задачу задали по спискам, я ее сдаю и распрощаюсь с инфой навсегда. Кто может избавьте меня от мук плз! Сама...

Как поменять местами элементы строки - C++
Собственно сабж вот в чём, как поменять местами элементы в строке, меняя только адрес. Вот функция, где str - адрес первого элемента...

Как поменять местами элементы массива структур? - C++
В ходе решения задачи возникла проблема: необходимо поменять местами элементы массива записей. Как это реализовать? Вот объявление...


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

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

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