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

Списки, стеки, очереди - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Двумерный массив. Поменять четные и нечетные строки. http://www.cyberforum.ru/cpp-beginners/thread178313.html
Всем доброго времени суток. Задание таково "Дана матрица М(6х4). Ввести данные в матрицу с клавиатуры. Поменять местами четные и не четные строки матрицы." С первой частью задания справился. А вот как поменять местами четные и не четные строки не догоняю. Сделать это нужно обязательно используя указатели. #include "stdafx.h" #include "conio.h" int _tmain(int argc, _TCHAR* argv) { int a;...
C++ Функции и перегруженный оператор Помогите реализовать на С++: 1.Определить пользовательский тип данных fraction (дробь), представляющий собой структуру из 2х полей: числителя (long m) и знаменателя (unsigned long n) 2. На основе создания функции НОД(найбольший общий делитель), вида unsigned long nod(unsigned long, unsigned long); 3 Используя функцию nod, создать функцию, производящую сокращение дроби: void reduce... http://www.cyberforum.ru/cpp-beginners/thread178312.html
Найти элементы, которые встречаються в массиве не менее двух раз и лежащие в заданном диапазоне C++
Дано натуральное число N и одномерный массив A1, A2, …, AN натуральных чисел. Найти элементы, которые встречаються в массиве не менее двух раз и которые лежат в диапазоне значений от m1 до m2 (определяються пользователем). Указать число вхождений найденных элементов.
C++ Найти минимальную сумму положительных элементов диагоналей, параллельных побочной диагонали
Помогите решить. 1. построить упорядоченный массив a из элементов массива b и c. Массивы b и c предварительно упорядочены по возрастанию. 2. дан массивa. Найти минимальную сумму положительных элементов диагоналей, параллельных побочной диагонали pomogite rewit 1. postroit uporyado4niy massiv a iz elementov massiva b i c. massivy b i c predvaritelno uporyado4eni po vozvarastaniyu 2.dan...
C++ Количество пятниц http://www.cyberforum.ru/cpp-beginners/thread178296.html
Вычислить кол-во пятниц, приходящихся на 13-е числа столетия с номером n, где n - заданное натуральное число.
C++ Вычисление факториала большого числа написать программу, которая вычисляла бы факториал заданного большого числа, например 500, и результат вычислений с точностью до единицы выводила на экран. подробнее

Показать сообщение отдельно
Peoples
715 / 375 / 340
Регистрация: 06.02.2016
Сообщений: 990
Записей в блоге: 10
Завершенные тесты: 3
09.10.2016, 13:25     Списки, стеки, очереди
Стек
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
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
template <typename T>
struct Node {
    T x;
    Node *next;
};
template <typename T>
class Stack {
    private:
        Node<T> *head;
    public:
        Stack() {
            head=NULL;
        }
        ~Stack();
        void push(T y);  // добавить элемент в вершину стека
        void pop(); // удалить элемент из вершины стека
        T top();  // возвращает вершину стека
        void printS();  // вывод стека
        int peek(int n);  // вывод n-ного элемента от вершины стека
        bool isempty();   // проверяет пусто ли стек
        int size();     // возвращает размер стека
};
template <typename T>
Stack<T>::~Stack() {
    while (head!=NULL) {
        Node<T> *temp=head->next;
        delete head;
        head=temp;
    }
}
template <typename T>
void Stack<T>::push(T y) {
    Node<T> *temp=new Node<T>;
    temp->x=y;
    temp->next=head;
    head=temp;
 
}
template <typename T>
void Stack<T>::pop() {
 
    if(head==NULL) {
        cout<<"Stack is empty";
    } else {
 
        Node<T> *temp=head;
        cout<<temp->x<<" ";
        head=temp->next;
        delete temp;
    }
}
template <typename T>
T Stack<T>::top() {
    if(head!=NULL) {
        return head->x;
    } else  cout<<"Stack is empty";
}
template <typename T>
void Stack<T>::printS() {
    Node<T> *temp=head;
    while(temp!=NULL) {
        cout<<temp->x<<" ";
        temp=temp->next;
    }
}
template <typename T>
int Stack<T>::peek(int n) {
    Node<T> *temp=head;
    for(int i=0; i!=n; i++) {
        temp=temp->next;
    }
    return temp->x;
}
template <typename T>
bool Stack<T>::isempty() {
    if(head==NULL) {
        return true;
    } else return false;
}
template <typename T>
int Stack<T>::size() {
    int c=0;
    Node<T> *temp=head;
    while(temp!=NULL) {
        temp=temp->next;
        c++;
    }
    return c;
}
int main() {
    Stack<int> st;
    for(int i=0; i!=5; i++) {
        st.push(i);
    }
    st.printS();
    cout<<endl;
    st.pop();
    st.pop();
    st.pop();
    cout<<endl;
    st.printS();
    cout<<endl;
    cout<<"Size: "<<st.size();
    cout<<endl;
    cout<<st.top()<<endl;
    cout<<st.peek(1);
    return 0;
}
Добавлено через 20 часов 17 минут
Двунаправленный список
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
using namespace std;
template<typename T>
struct Node {    // структура узел
    T x;        // информационное поле узла
    Node *next,*prev;    // указатели на структуру
};
template<typename T>
class TWList {        // класс двунаправленный список
    public:
        Node<T> *head,*tail;     // указатели на начало и конец списка
    public:
        TWList():head(NULL),tail(NULL) {}    // инициализируем их пустым значением
        ~TWList();     // деструктор
        void Add(T y);     // добавление элемента
        void ShowFromBegin();   // вывод списка с начала
        void ShowFromEnd();   // вывод списка с конца
        void Head();      // вывод головы
        void Tail();    // вывод хвоста
        void AddH(T y); // добавить в начало списка
        void delNum(int n);  // удаление элемента по номеру
        int Size(); // размер списка
        int findNum(int n);  // вернуть элемент расположенный на n месте сверху
};
template<typename T>
TWList<T>::~TWList() {
    while(head!=NULL) {     // пока список не пуст
        tail=head->next;    // последний элемент равен следующему за 1 элементом
        delete head;       // удаляем 1
        head=tail;    // первым становится последний
    }
}
template<typename T>
void TWList<T>::Add(T y) {
    Node<T> *temp=new Node<T>;   // выделяем память для нового элемента
    temp->next=NULL;      // указываем что за этим элементом нет других
    temp->x=y;       // присваиваем ему значение переданное аргументом
    if(head!=NULL) {       // пока список не пуст
        temp->prev=tail;       // следующий за нашим элементом элемент будет хвостом
        tail->next=temp;        // элемент следующий за хвостом наш
        tail=temp;               // наш элемент равен хвосту
    } else {              // если же список пуст
        temp->prev=NULL;   // тогда перед нашим элементом пусто
        head=tail=temp;   // 1 элемент равен последнему и равен нашему элементу
    }
}
template<typename T>
void TWList<T>::ShowFromBegin() {
    Node<T> *temp=head;       // temp равен началу списка
    while(temp!=NULL) {      // пока список не пуст
        cout<<temp->x<<" ";  // выводим знание поля
        temp=temp->next;      // перемешаем на следующий элемент
    }
}
template<typename T>
void TWList<T>::ShowFromEnd() {
    Node<T> *temp=tail;         // temp равен концу  списка
    while(temp!=NULL) {      // пока элементы есть
        cout<<temp->x<<" "; // выводим значение
        temp=temp->prev;   // перемещаем элемент на предыдущий
    }
}
template<typename T>
void TWList<T>::Head() {
    if(head!=NULL) {
        cout<<head->x<<endl;
    }
}
template<typename T>
void TWList<T>::Tail() {
    if(tail!=NULL) {
        cout<<tail->x<<endl;
    }
}
template<typename T>
void TWList<T>::AddH(T y) {
    Node<T> *temp=new Node<T>;
    temp->x=y;
    if(temp!=NULL) {
 
        temp->next=head;
        head=temp;
    } else {
        head=tail=temp;
    }
}
template<typename T>
void TWList<T>::delNum(int n) {
    Node<T> *temp=head;
    if(temp!=NULL && n<=Size()) {
        for(int i=0; i!=n; i++) {
            temp=temp->next;
        }
        if(temp==head) {
            head=temp->next;
        } else {
            temp->prev->next=temp->next;
        }
        delete temp;
    }
}
template<typename T>
int TWList<T>::Size() {
    Node<T> *temp=head;
    int c=0;
    while(temp!=NULL) {
        temp=temp->next;
        c++;
    }
    return c;
}
template<typename T>
int TWList<T>::findNum(int n) {
    Node<T> *temp=head;
    while(temp!=NULL && n<=Size()) {
        for(int i=0; i!=n; i++) {
            temp=temp->next;
        }
        return temp->x;
    }
}
int main() {
    TWList<int> list;
    for(int i=0; i!=5; i++) {
        list.Add(i);
    }
    list.ShowFromBegin();
    cout<<endl;
    list.ShowFromEnd();
    cout<<endl;
    list.Head();
    list.Tail();
    list.Add(10);
    cout<<endl;
    list.ShowFromBegin();
    list.AddH(7);
    cout<<endl;
    list.ShowFromBegin();
    cout<<endl;
    list.delNum(4);
    list.ShowFromBegin();
    return 0;
}
 
Текущее время: 07:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru