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

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

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

Как написать функцию переворачивающую элементы списка - C++

23.10.2013, 18:27. Просмотров 437. Ответов 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
#include "stdafx.h"
#include <conio.h>
#include <iostream> 
/*Структура содержащая поле данных.*/
typedef struct Data
{
   int a;
};
/*Структура содержащая поле типа Data и адрес следующего элем. next.*/
typedef struct List
{
   Data d;
   List *next;
};
 
 
 
int main() 
{ 
    List *u = NULL; //Указатель на элемент начала списка.
    u = new List;   // Выделяем память под элемент списка.
    u->d.a = 4;     // Заполняем поля с данными.
    List *x;//Заводим новую переменную.//
    x = u;//Последний элемент списка совпадает с началом.//
    /*Выделяем место в памяти для следующего элемента списка и перенаправляем указатель x на выделенную область памяти.*/
        x->next = new List;
        x = x->next;
        /*Выделяем место в памяти для следующего элемента списка и перенаправляем указатель x на выделенную область памяти.*/
        x->d.a = 5;
        x->next = NULL;
/*Функция для вывода списка.*/
void Print(List *u);
{
   List *p = u;
   printf ( "Spisok:");
   while(p)
   {
      printf( "%d", p->d.a );
      p = p->next;
   }
}
/*Функция которая переворачивает список в обратном порядке.*/
void Reverse();
{
 
 
}
/*Удаляем память.*/
delete (&u, x);
    getch();
    return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 18:27     Как написать функцию переворачивающую элементы списка
Посмотрите здесь:
C++ Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка.
C++ Написать функцию, которая из списка образует два новых списка. Один содержит нечетные числа, а второй - парные
C++ Списки. Как создать одновременно 2 списка? Как из второго списка поместить элементы в первый?
C++ Написать функцию, которая в одномерном массиве заменяет элементы кратные некоторому числу на нулевые элементы
Написать функцию удаления элемента из списка C++
Написать функцию, которая переставляет элементы массива типа int так, что все положительные элементы предшествуют отрицательным. C++
C++ Написать функцию сортировки для однонаправленного списка
C++ Написать функцию стирания элемента двусвязного списка
C++ Написать функцию удаления четных элементов двусвязного списка
C++ Описать функцию, которая удаляет все минимальные элементы из списка
C++ Написать функцию, меняющую местами два элемента однонаправленного списка
Немогу понять задание (Написать рекурсивную функцию обращения списка) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
23.10.2013, 18:49     Как написать функцию переворачивающую элементы списка #2
Раз уж Вы написали такой код и можете в нем разобраться, я Вам дам просто направление, в котором двигаться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int a = 5, b = 10;
    a ^= b;
    b ^= a;
    a ^= b;
 
    cout << a << ' ' << b << endl;
 
    system("pause");
    return 0;
}
output:
10 5
Добавлено через 6 минут
Или вот так нагляднее
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int a[10];
    int tmp;
 
    for (int i = 0; i < 10; i++)
        a[i] = i;
    
    tmp = a[9 >> 1];
 
    for (int i = 0, j = 9; i <= tmp; i++, j--)
    {
        a[i] ^= a[j];
        a[j] ^= a[i];
        a[i] ^= a[j];
    }
 
    for (int i = 0; i < 10; i++)
        cout << a[i] << ' ';
 
    cout << endl;
 
    system("pause");
    return 0;
}
output:
9 8 7 6 5 4 3 2 1 0
Ответ Создать тему
Опции темы

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