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

Перестановка элементов очереди - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Двухмерный массив указателей из объектов http://www.cyberforum.ru/cpp-beginners/thread586005.html
//point1.h #ifndef POINT_H #define POINT_H #include <iostream> class CIntArray { public:
C++ Модули. Многофайловые проекты ДОброе время суток, не могли бы вы мне помочь написать програму, очень ну очень надо. желательно чем проше тем лутше, я чайник. задание. Модули. Многофайловые проекты Определить функцию, возвращающую количество недель до конца года. Выполнить перегрузку функции для следующих типов параметров: Структура «дата» (год, месяц, день). Три целочисленных параметра: год, месяц, день. Два... http://www.cyberforum.ru/cpp-beginners/thread586000.html
DIv MOD в С++ C++
не подскажете как описать оператор ДИВ в С++? суть такова а=5 b=2 x=a DIV 2 y=5/2 printf(...x) (y) мне нужно получить ответ 1 и 2.5, последнее не проблема... я смотрел в инете - там пишут что в С "/" - аналог див для С++ и "%" - мод
удаление элемента из Red-Black tree C++
Помогите пожалуйста. Дерево представлено в виде последовательности. При удалении элемента из дерева нужно удалять и элемент из последовательности. Функция void Tree :: deleteNode(Node *z) работает косячно, я просто не очень понимаю как это сделать. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <conio.h> #include <iostream.h> int QQ = 10;
C++ Необходимо подправить программу http://www.cyberforum.ru/cpp-beginners/thread585984.html
я написал программу: #include <iostream> #include "liquid.h" #include "SpNapitki.h" using namespace std; void liquid::setValue(char*nazvanie1, float plot1) { nazvanie=nazvanie1;
C++ Разделение строки на отдельные слова [С++] Надо разделить строку на отдельные слова. Использовать strtok() нельзя. подробнее

Показать сообщение отдельно
estel
1 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 31
25.05.2012, 07:13     Перестановка элементов очереди
Добрый день. У меня есть задание - Поменять местами первый и последний элементы в очереди.

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

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 <conio.h>
#include <string.h>
#include <stdlib.h>
#include <clocale>
 
typedef struct sp //Создаем динамическую структуру данных с указателем *next
{
    char inf [100] ; //Очередь
    struct sp *next; //Указатель на следующий элемент
} sp;
 
sp *g,*head,*teil; //Голова и хвост очереди
 
void program()
{
    int kol=1; //счетчик(номера элементов очереди)
    char key; //клавиша события
 
    //Вводим начальный элемент очереди
    printf("Введите элементы стрруктуры: \n");
    head=(sp*) malloc(sizeof(sp)); //создает начальный элемент
    g=head; //g будет указывать на голову очереди
    printf("Введите %i элемент: ",kol);
    scanf("%s",&g->inf); //считываем элемент g который помещаеться в очередь инф
    g->next=0; //Следующему элементу мы присваиваем 0
    //teil->next=0; //Следующему элементу за хвостом мы так же присваиваем 0
    teil=head; //Хвост очереди указывает на ее начало
 
    //Ввод остальных эл-тов структуры
    kol++;
    printf("Введите %i элемент: ",kol);
    g=(sp*) malloc(sizeof(sp));
    scanf("%s",&g->inf);
    g->next=0; 
    teil->next=g; 
    teil=teil->next;
 
    do {
            kol++;
            printf("Введите %i элемент: ",kol);
            g=(sp*) malloc(sizeof(sp));
            scanf("%s",&g->inf);
            g->next=0;
            teil->next=g;
            teil=teil->next;
            printf("Для прекращения ввода нажмите ESC; Для продолжения любую клавишу\n");
            key=getch();
        } while (key!=27);
 
    //Вывод всех введенных элементов
    printf("Вы ввели такие элементы: \n");
    g=head;
    kol=0;
 
    while (g!=0)
        {
            kol++;
            printf("Эллемент %i=%s: \n",kol,g->inf);
            g=g->next;
        }
 
    getch();
}
 
void zamena()
{
    char *tmp; //временный массив символов
 
    //Перезапись очереди
    g=head;
    while (g->next != NULL) //Пока следующий элемент не равен 0
        {
            if (g->next->next == NULL) //Если третий от головы элемент равен нулю то
                {
                    strcpy(tmp,g->inf); //Копирует первый элемент в тмп
                    strcpy(g->inf,head->inf); //Копирует 
                    strcpy(head->inf,tmp);
                }
            g=g->next; //Указывает на следующий элемент
        }
 
    //Вывод результата
    g=head;
 
    int kol=1;
 
    printf("\nРезультат: ");
    while (g!=NULL)
        {
            printf("\n%i-й элемент равен:%s",kol,g->inf);
            kol++;
            g=g->next;
        }
    getch();
}
 
void cleen() //Очищаем всю очередь
{
    g=head;
    while (g != NULL)
        {
            free(g);
            g=g->next;
        }
}
 
void main()
{
    setlocale(LC_ALL, "Russian"); 
    program();
    zamena();
    cleen();
}
В коде, где собственно идет перезапись очереди я и намудрила. Буду рада, если кто-то мне поможет.

Добавлено через 59 минут
Где же вы, добрые люди?

Добавлено через 7 часов 16 минут
Системный ап
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru