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

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

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

Процедура для изменения направления односвязного списка на противоположное - C++

29.10.2012, 19:24. Просмотров 447. Ответов 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
#include <stdio.h>
#include <string.h>
 
class student
{
 public:
       char name[20];
       char famil[20];
       int year;
       char univer[20];
       student *pNext;
};
 
student *pHead=NULL;
 
student *push(student **pH, char *n, char *f, int y, char *u)
{
 student *pTemp;
 pTemp= new student;
  if (pTemp==NULL)
   return 0;
 
 printf("Vvedite imy: ");
 scanf("%s",n); 
 strcpy (pTemp -> name,n);
 printf("Vvedite familiy: ");
 scanf("%s",f);
 strcpy (pTemp -> famil,f);
 printf("Vvedite god rochdenia: ");
 scanf("%d",&y);
 pTemp -> year=y;
 printf("Vvedite universitet: ");
 scanf("%s",u);
 strcpy (pTemp -> univer,u);
 
 pTemp -> pNext=*pH;
 *pH=pTemp;
 
return *pH;
}
 
int out(void)
{
 int i;
 struct student *pPtr;
 
 pPtr=pHead;
 printf("\n***________Студенты________***\n\n");
 printf("  Имя  ");
 printf(" Фамилия ");
 printf("     Год рождения");
 printf("     Universitet\n");
 while(pPtr!=NULL){
 printf(" %s     ", pPtr -> name);
 printf(" %s     ", pPtr -> famil);
 printf(" %d            ", pPtr -> year);
 printf(" %s       \n", pPtr -> univer);
 pPtr=pPtr->pNext;}
return 0;
}
 
int Menu()
{
 int alt;
 
 printf("1.Ввод данных\n");
 printf("2.Вывод\n");
 printf("3.Выход\n");
 printf("\nВведите режим:\n\n");
 
 scanf("%d",&alt);
 
 return alt;
}
 
int main()
{
 int Reg=0;int y; char n,f;
 printf("                   Меню                  \n");
 
 while(Reg!=3)
 {
  Reg=Menu();
 
  switch(Reg)
  {
   case 1:push(&pHead, "%s", "%s", y, "%s"); break;
   case 2:out(); break;
  }
 }
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2012, 19:24
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Процедура для изменения направления односвязного списка на противоположное (C++):

Шаблон для односвязного списка - C++
Помогите разобраться с шаблонами, выводятся ошибки, ничего не получается.. //List.h #include &quot;header.h&quot; template &lt;typename...

Шаблон для односвязного списка - C++
Доброго времени суток! Проблема - пишу шаблон для односвязного списка На приведенном фрагменте дает ошибку - &quot; 45 D:\C++\test.cpp...

Конструктор копирования для односвязного списка - C++
Запутался уже, подскажите пожалуйста что я делаю не так в конструкторе копирования. файл list.h #ifndef LIST_H #define LIST_H ...

Шаблон для узла односвязного списка - C++
Есть узел typedef struct Var { String varname; int value; struct Var *next; } Var; Нужно сделать так, чтоб...

Не работает сортировка для односвязного списка - C++
Код следующий: #include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; #include &lt;algorithm&gt; #include &lt;string&gt; using...

Консольный интерфейс для кольцевого односвязного списка - C++
http://ubuntuone.com/6wKtCh5iViDl0xyPSRc3LC вот тут все файлы проги.. 7.cpp главный.. когда запускаю, при выборе любого пункта, кроме...

2
Neutrino596
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 10
02.08.2017, 18:26 #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
#include <iostream>
 
using namespace std;
 
typedef struct node
{
    int val;
    node* next;
}*pnode;
 
//revercing list
void rev(pnode a, pnode b)
{
    if (!b)
    {
        return;
    }
    rev(a->next, b->next);
    b->next = a;
    a->next = NULL;
}
 
void print(pnode head)
{
    while (head)
    {
        cout << head->val << " ";
        head = head->next;
    }
    cout << endl;
}
 
int main()
{
    int arr[] = { 5, 8, 6, 3, 9 };
    pnode head = new node, tail;
    head->val = arr[0];
    tail = head;
 
    for (int i = 1; i < 5; i++)
    {
        tail->next = new node;
        tail = tail->next;
        tail->val = arr[i];
        tail->next = NULL;
    }
 
    print(head);
 
    rev(head, head->next);
 
    print(tail);
 
    system("pause");
}
0
notAll
440 / 162 / 39
Регистрация: 27.05.2016
Сообщений: 437
Завершенные тесты: 2
03.08.2017, 12:28 #3
Кому надо - забирайте:
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
#include <iostream>
#include <cstdlib>
 
struct forward_list
{
    struct node
    {
        int     m_val = 0;
        node*   m_next = nullptr;
 
        explicit node (int v) : m_val(v), m_next(nullptr) {}
 
        ~node() { puts(__PRETTY_FUNCTION__); }
    };
 
    node* m_head = nullptr;
 
public:
    void push_front(int v)
    {
        node* new_node = new node(v);
 
        node* p_head = m_head;
        m_head = new_node;
        new_node->m_next = p_head;
    }
 
    void insert_after(int pos, int v)
    {
        node* new_node = new node(v);
 
        node* p_head = m_head;
        node* p_prev = nullptr;
 
        while (m_head && pos-- > 0)
        {
            node* p_next = m_head->m_next;
            p_prev = m_head;
            m_head = p_next;
        }
 
        node* cur_head = m_head;
        m_head = new_node;
        new_node->m_next = cur_head;
        if (p_prev)
        {
            p_prev->m_next = new_node;
            m_head = p_head;
        }
    }
 
    size_t size() const
    {
        size_t size = 0;
        node* temp = m_head;
        while (temp)
        {
            node* next = temp->m_next;
            ++size;
            temp = next;
        }
        return size;
    }
 
    bool empty() const
    {
        return !m_head;
    }
 
    void print() const
    {
        node* temp = m_head;
        while (temp)
        {
            node* next = temp->m_next;
            std::cout << temp->m_val << " ";
            temp = next;
        }
    }
 
    void reverse()
    {
        node* prhead = nullptr;
 
        while (m_head)
        {
            node* p = m_head->m_next;
            m_head->m_next = prhead;
            prhead = m_head;
            m_head = p;
        }
        m_head = prhead;
    }
 
    ~forward_list()
    {
        while (m_head)
        {
            node* next = m_head->m_next;
            delete m_head;
            m_head = next;
        }
    }
};
 
int main()
{
   forward_list fl;
   fl.push_front(3);
   fl.push_front(2);
   fl.push_front(1);
   fl.insert_after(0, 100);
   fl.insert_after(10, 101);
   fl.print();
   std::cout << std::endl;
 
   fl.reverse();
   fl.print();
   std::cout << std::endl;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2017, 12:28
Привет! Вот еще темы с ответами:

Сортировку односвязного списка переделать для двусвязного - C++
Здравствуйте! Есть проблема в реализации сортировки под двусвязный список. Есть рабочая сортировка под односвязный. Как ее переделать...

Разработать шаблон класса для реализации односвязного списка - C++
Помогите пожалуйста разработать шаблон класса для реализации односвязного списка.

Напишите класс «Стек» для целочисленных данных на основе односвязного списка - C++
Напишите класс «Стек» для целочисленных данных на основе односвязного списка. Предусмотрите функции добавления и извлечения элемента,...

Спроектировать шаблон класса spisok для реализации односвязного линейного списка. Не работает сортировка - C++
Здравствуйте! Очень нужна помощь в реализации программы. Задание: Спроектировать шаблон класса spisok для реализации односвязного...


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

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

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