Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2011, 10:21   #1
iKarma
Кипучий чайник
Пользователь
 
Регистрация: 17.10.2011
Сообщений: 55
Восклицание Односвязный и двусвязный списки

В общем сабж - нужно переделать прогу под односвязный и двусвязный списки, а то у меня ни то и ни сё =) Вот код:
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

struct BOOKS {
	char Author; //автор
	char Title;  //название книги
	int Year; //год
	int Quantity; //количество экземпляров
	BOOKS *next;  //указатель на след элемент
};

class BOOK {
public:
	BOOK();
	void Input(char Author,char Title,int Year,int Quantity); //ввод данных
	void Print(); //вывод введенных данных
	void Output(int Year); //вывод результата
	~BOOK();
private:
        BOOKS *first; //указатель на перв элемент
	BOOKS *prev; //указатель на пред элемент
};

BOOK::BOOK() {
	first = NULL;
	prev = NULL;
}

BOOK::~BOOK() {
	while (first != NULL)
	{
		BOOKS *elem = first;
		first = first->next;
		delete elem;
	}
}

void BOOK::Input(char Author,char Title,int Year,int Quantity) {
	BOOKS *elem=new BOOKS();
	if (first==NULL)
		first = elem;
	else 
		prev->next = elem;
	elem->Author = Author;
	elem->Title = Title;
	elem->Year = Year;
	elem->Quantity = Quantity;
	elem->next = NULL;
	prev = elem;
}

void BOOK::Print() {
	int i = 0;
	BOOKS *elem = first;
	while (elem != NULL) {
		cout << "Book #" << i+1 << "\n" << "Title: " 
                       << elem->Title << " Author: " << elem->Author << " Year: " << elem->Year 
                       << " Quanitity: " <<elem->Quantity << "\n";
	    elem = elem->next;
		i++;
	}
}

void BOOK::Output(int Year) {
	int i = 0, k = 0;
	BOOKS *elem = first;
	while (elem != NULL)
	{
		if (elem->Year == Year) {
			k++;
			cout << "Book #" << i+1 << "\n" << "Title: " << elem->Title << " Author: " 
                                  << elem->Author << " Year: " << elem->Year << " Quanitity: " << elem->Quantity << "\n";
		}
		elem = elem->next;
		i++;
	}
	if (k==0)
	  cout << "No books of such year!\n";
	cout << "--------------------------------------------------------------------------------\n";
	cout << "Number of the books of " << Year << " = " << k << "\n";
}

int main() {
	int i, n, year;
	char Author; //автор
	char Title;  //название книги
	int Year; //год
	int Quantity; //количество экземпляров
	BOOK MyLibrary;
	cout << "Enter the number of the books: ";
	cin >> n;
	cout << "--------------------------------------------------------------------------------\n";
	for (i=0; i<n; i++){
		cout << "Book #" << i+1 << "\n";
		cout << "Title: ";
		cin >> Title;
		cout << "Author: ";
		cin >> Author;
		cout << "Year: ";
		cin >> Year;
		cout << "Quanitity: ";
		cin >> Quantity;
		MyLibrary.Input(Author, Title, Year, Quantity);
	}
	cout << "--------------------------------------------------------------------------------\n";
	cout << "Your library is consisted of next books:\n";
        MyLibrary.Print();
	cout << "--------------------------------------------------------------------------------\n";
	cout << "Enter the year of the search: ";
	cin >> year;
	cout << "--------------------------------------------------------------------------------\n";
	cout << "Your search results: \n";
	MyLibrary.Output(year);
	cout << "--------------------------------------------------------------------------------\n";
	cout << "For exit press any key...";
	getch();
	return 0;
}

Последний раз редактировалось rpy3uH; 20.11.2011 в 18:31.
iKarma вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Односвязный список EddieG Общие вопросы C/C++ 1 19.10.2011 15:30
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен lineico Помощь студентам 2 09.05.2011 17:45