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

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

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

Формирование списка и работа с ним - C++

27.09.2012, 15:47. Просмотров 539. Ответов 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
53
#include <iostream>
using namespace std;
struct node { int info; 
struct node *next;
}; 
// [ЭТО]
int countOfE(node *list, int E) {
node *iter = list;
int count = 0;
while (iter != NULL) {
if (iter->info == E)
count++;
iter = iter->next;
// [/ЭТО]
}
return count;
}
void main()
{
typedef node *NodePtr; // указатель на тип node
NodePtr head = NULL;
NodePtr p;// указатель на текущий элемент
NodePtr tail;// указатель на "хвост" очереди
int N = 10; // количество элементов в очереди
int cnt = 1;// счетчик элементов в очереди
 
// [ЭТО]
if (head == NULL)
{ head = new node;
head->info = rand()%100 - 50;
head->next = NULL;
tail = head;
}
for (int i = 2; i<=N; i++)
{ p = new node;
p->info = rand()%100 - 50;
tail->next = p;
p->next = NULL;
tail = p;
}
// Вывод очереди на экран
p = head;
for (int i = 1; i<=N; i++)
{ cout << p->info << ' ';
p = p->next;
// [/ЭТО]
}
cout <<endl;
int E;
cin >> E;
cout << "Kol vo chisel ravnoe vvedennomy " << countOfE(head, E) << endl;
return;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2012, 15:47     Формирование списка и работа с ним
Посмотрите здесь:

Формирование случайного массива и действия над ним - C++
Сформировать случайным образом массив из 20 элементов. Найти максимальный и минимальный элементы массива, поменять их местами и вычислить...

Формирование списка - C++
Начал учить Си недавно. ВРоде все идет более-менее нормально, но на списках я встал колом и не могу понять почему так происходит. Итак,...

Формирование списка из текстового файла - C++
Люди объясните пожалуйста словесно выполнение функции ввода списка из текстового файла, желатено построчно очень важно понять, ну и по...

Формирование символьного двухсвязного списка - C++
нужна функция формирования символьного 2вусвязного списка!!! Хэлп!!!

не находит файлы со списка путей к ним - C++
Логика: Файл1 - список файлов с полными путями к ним. Срр открывает Файл1, читает строку, присваивает строку переменной char, далее...

Формирование нового списка или из pascal -> с++ - C++
Добрый вечер всем! Друзья помогите пожалуйста решить задачу на языке С++. Комп содержит записи, состоящие из трех полей: 1) фамилия 2)...

Динамические структуры данных. Формирование линейного списка. - C++
Текст помощи для некоторой программы организован в виде линейного списка. Каждая компонента текста помощи содержит термин (слово) и...

Стек и работа с ним - C++
Добрый вечер! Мне дали задания: 1. Написать функцию для удаления всех элементов с четными номерами из односвязного списка 2....

Стек и работа с ним - C++
Нужно написать программу, которая формирует стек, после удаляет минимальный элемент и выводит стек на экран.

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.09.2012, 01:30     Формирование списка и работа с ним #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// функция, которая возвращает количество элементов в очереди со значением info равным E
 int countOfE(node *list, int E) // в функцию передаётся указатель на начало очереди и значение E
 {
 node *iter = list; // указатель на начало очереди
 int count = 0; // счётчик
 while (iter != NULL) // перебор элементов очереди
 {
    if (iter->info == E) // если найден элемент со значением info равным E, то увеличиваем счётчик
        count++;
    iter = iter->next; // переход к следующему элементу
 }
 return count; // возвращаем количество найденных элементов
 }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// создание очереди
if (head == NULL) // если очередь пустая
 { 
    head = new node; // первый элемент становится в голове очереди
    head->info = rand()%100 - 50; // присваиваем значение первому элементу
    head->next = NULL; // первый элемент указывает на NULL (значит он последний)
    tail = head; // хвост и голова очереди пока совпадают
 }
 for (int i = 2; i<=N; i++) // добавляем N - 1 элемент в очередь
 { 
    p = new node; // новый элемент 
    p->info = rand()%100 - 50; // присваиваем значение новому элементу
    tail->next = p; // предыдущий элемент будет указывать на новый элемент
    p->next = NULL; // новый элемент будет указывать на NULL (значит он последний)
    tail = p; // новый элемент в хвост очереди
 }
 // Вывод очереди на экран
 p = head; // p указывает на начало очереди
 for (int i = 1; i<=N; i++) // перебор N элементов очереди 
 { 
    cout << p->info << ' '; // вывод значения info элемента очереди
    p = p->next; // p указывет на следующий элемент очереди
 }
Ответ Создать тему
Опции темы

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