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

Связные списки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Захват аудио с веб-камеры и сохранение http://www.cyberforum.ru/cpp-beginners/thread612317.html
Не так давно начал заниматься программированием, по этому еще не знаю как в c++ работать со звуком и внешними устройствами. Сейчас занялся написание программы, и в ней нужно захватить голос с микрофона и сохранить его в wav или желательно во flac. Если знаете, то пожалуйста подскажите, в каком направлении копать, и особенно хорошо будет, если у кого-нибудь будет похожий уже имеющийся код для...
C++ Строка. Код символа Дана строка. В ней найти прописную(большую) латинскую букву с наибольшим кодом и заменить этим кодом все цифры в строке. Использовать рекурсию. http://www.cyberforum.ru/cpp-beginners/thread612310.html
Среда разработки для новичка C++
Всем привет. Я начал изучать C++ по книжке "с++ за 21 день". К сожалению, в этой книге все рассматриваемые примеры консольные. Захотелось разобраться как делать интерфейсы программам, как делать не простые "серенькие приложеница", а рисовать кнопки самому, делать их "объемными и мигающими при наведении". На данный момент я использую Microsoft Visual C++ 6.0. Подскажите что-нибудь поновее и...
g++ Заголовочные файлы C++
Значит есть у меня файлик main.cpp к нему инклудиться #include "Event.h" .В этом хидере название функции void event_loop(); .Так же этот хидер инклудиться к event.cpp и там уже полный код функции. Но когда я эту функцию вызываю в main.cpp,он выдаёт ошибку на ней,ну типо чо за функция такая. Короче просто не видит её.Но почему так,что я не правильно сделал?
C++ Сводная ведомость результатов экзаменационной сессии студенческой группы http://www.cyberforum.ru/cpp-beginners/thread612288.html
1. Сводная ведомость результатов экзаменационной сессии студенческой группы находится в файле на диске и для каждого студента содержит фамилию, номер группы и оценки по пяти дисциплинам. Количество студентов не превышает 10 человек. Составить программу, с помощью которой можно получить список студентов обучающихся в одной группе (номер группы вводится с клавиатуры). 2. Сводная ведомость...
C++ Файл: Считать файл TWO, удвоив все буквы «а». 1. Считать файл TWO, удвоив все буквы «а». 2. Прочитать файл TWO и вывести его задом наперёд. 3. В файлах f1 и f2 целые числа упорядочены по возрастанию. Создайте файл f3, объединив f1 и сохранив упорядоченность. 4. Написать программу, определяющую, сколько раз встретилось заданное слово в текстовом файле, длина строки в котором не превышает 80 символов. Текст не содержит переносов слов. 5.... подробнее

Показать сообщение отдельно
Dady
2 / 2 / 0
Регистрация: 20.03.2012
Сообщений: 53
23.06.2012, 19:59  [ТС]     Связные списки
Всё исправил, сейчас всё работает, но как изменить главную часть кода чтобы можно было вводить несколько книг? Вот код:

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
typedef struct tag_lib { 
char title[100]; 
char author[100]; 
int value;
int old;
} LIB;
 
/*Структура, которая описывает связи между строками таблицы, и представляет собой объект данных.
Здесь *prev и *next – указатели на предыдущую и следующую строки соответственно.*/
/////////////////////////////////////////////////////////
typedef struct tag_obj { 
LIB lib; 
struct tag_obj* prev, *next; 
} OBJ;
OBJ* head = NULL, *tail = NULL;
 
///////////////////////////////////////////////////////
OBJ* add_obj(char* title, char* author, int value)//функция использует три параметра для ввода данных в структуру LIB.
{                                              
 OBJ* current = (OBJ *)malloc(sizeof(OBJ));//создается новая структура типа OBJ.
 strcpy(current->lib.title, title); //запись информации в структуру LIB
 strcpy(current->lib.author, author); //запись информации в структуру LIB
 current->lib.value = value; //запись информации в структуру LIB
 current->prev = tail;//инициализируются указатель prev добавленного объекта
 //prev указывает на предыдущий объект, т.е. равен указателю tail.
 current->next = NULL;//инициализируются указатель next добавленного объекта 
 //добавление осуществляется в конец списка, то указатель next должен быть равен NULL
 if(tail != NULL) tail->next = current; 
 /*объект, на который указывает указатель tail, становится предпоследним и его 
 указатель next должен указывать на последний объект, т.е. быть равным указателю current.*/
 if(head == NULL) head = current; 
 /*Затем проверяется, является ли добавляемый объект первым (head == NULL), 
 и если это так, то указатель head приравнивается указателю current */
 tail = current;//указатель tail инициализируется на последний объект
 return current;//возвращает указатель на созданный объект
}
 
///////////////////////////////////////////////////////
OBJ* del_obj(OBJ* current)//функция удаления элемента.
{ //del_obj() в качестве аргумента использует указатель на объект, который следует удалить.
 if(current == head) 
//Сначала выполняется проверка для инициализации указателя head, в том случае, 
//если удаляется первый объект, на который он указывает.
if(current->prev != NULL) head = current->prev; 
 else head = current->next; 
 if(current == tail) //Аналогичная проверка осуществляется для tail.
if(current->next != NULL) tail = current->next; 
 else tail = current->prev; 
 if(current->prev != NULL) 
//проверка: если предыдущий объект относительно текущего существует, 
//то его указатель на следующий объект следует переместить.
current->prev->next = current->next; 
 if(current->next != NULL) 
//Аналогичная проверка выполняется и для следующего объекта относительно удаляемого.
current->next->prev = current->prev; 
 free(current);//удаления объекта из памяти 
return head;//возвращается указатель на первый объект.
}
 
////////////////////////////////////////////////////
int main() 
{ setlocale(LC_ALL,"Russian");
 OBJ *current = NULL; 
 int value; 
 char title[100], author[100]; 
 do 
 { 
 printf("Введите название книги: "); 
 scanf("%s",title); 
 printf("Введите автора: "); 
 scanf("%s",author); 
 printf("Введите стоимость: "); 
 scanf("%d",&value); 
 current = add_obj(title,author,value);//формирует связанный список на основе введенных данных.
 printf("Для выхода введите 'q'"); 
 } while(scanf("%d",&value) == 1); 
 current = head; //указатель current передвигается на первый объект
 while(current != NULL) 
 { 
 printf("Title: %s, author %s, value = %d\n", 
 current->lib.title, current->lib.author, current->lib.value); 
 current = current->next; 
 } 
 while(head != NULL) 
 del_obj(head);
 system("Pause"); 
 return 0; 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru