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

Циклическая очередь - C++

Восстановить пароль Регистрация
 
mixtape
0 / 0 / 0
Регистрация: 16.11.2010
Сообщений: 4
17.11.2010, 17:52     Циклическая очередь #1
Всем доброго времени суток.Нужно написать программу с функциями вставки нового эл-та, удаления произвольного эл-та, корректировки произвольного эл-та, вывода на экранЮ для циклической очереди.
Код
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;


struct sp
{char street[30];
sp *next; 
sp *back;
};

sp *del (sp *list);
sp *insert(sp *list);
sp *correct(sp *list);
void print(sp *list);
char bufRus[256];
char* Rus(const char* text);

void main()
{
	int v;sp *list;
	list=0;
	while(1)
	{
		cout<<Rus("1: вставка нового элемента")<<endl;
		cout<<Rus("2: удаление произвольного элемента")<<endl;
		cout<<Rus("3: корректировка любого элемента")<<endl;
		cout<<Rus("4: просмотр списка на экране")<<endl;
		cout<<Rus("5: выход")<<endl;
		cout<<Rus("Введи вариант: ");
		cin>>v;
		switch (v)
		{
		case 1: list=insert(list); break;
		case 2: list=del(list); break;
		case 3: list=correct(list); break;
		case 4: print(list); break;
		case 5: return; break;
		default: cout<<Rus("недопустимый вариант")<<endl;
		}
	}
}



sp *del (sp *list)
{
	if (list==0) cout<<Rus("Список уже пуст")<<endl; 
	else if (list->next==0)
		{
			delete(list);
			list=0;
		}
		else
		{
			sp *ptr=list;
			while (ptr->next->next) ptr=ptr->next;
			delete(ptr->next);
			ptr->next=0;
		}
	cout<<Rus("Удаление успешно завершено!")<<endl;
	return list;
}
 
sp *insert(sp *list)
{
	sp *ptr=list; sp *q=new sp;
	cout<<Rus("Введите новую улицу ");
	cin>>q->street;
	if (list==0)
	{
		list=q;
		list->back=0;
		list->next=0;
	}
	else
	{
		while (ptr->next) ptr=ptr->next;
		ptr->next=q;
		ptr->next->back=ptr;
		ptr->next->next=0;
	}
	cout<<Rus("Вставка успешно завершена!")<<endl;
	return list;
}

sp *correct(sp *list)
{
	sp *ptr=list; int n;
	if (list==0) {cout<<Rus("Ошибка! Список пуст.")<<endl; return list;}
	cout<<Rus("Введите номер заменяемой улицы ");
	cin>>n;
	if (n<1) {cout<<Rus("Ошибка! Введено недопустимое значение")<<endl;return list;}
	for (int i=1; i<n; i++) 
	{
		if (ptr->next==0) {cout<<Rus("Ошибка! Введено недопустимое значение")<<endl;return list;}
		ptr=ptr->next;
	}
	cout<<Rus("Введите новое значение элемента списка ");
	cin>>ptr->street;
	return list;

}

void print(sp *list)
{
	if (list==0)
	{
		cout<<Rus("Список пуст")<<endl;
	}
	else
	{
		sp *ptr=list;
		while (ptr)
		{
			cout<<Rus(ptr->street)<<endl;
			ptr=ptr->next;
		}
	}
}

char* Rus(const char* text)
{
	CharToOem(text, bufRus);
	return bufRus;
}
Я тут уже кое чего набросал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2010, 17:52     Циклическая очередь
Посмотрите здесь:

C++ Циклическая программа
C++ Циклическая смена даты
C++ Циклическая очередь
C++ Циклическая форма реккурентного соотношения.
Циклическая строка. Определить минимально возможную длину исходной строки C++
C++ Циклическая зависимость классов
C++ Циклическая форма перестановки массива
с++,циклическая очередь, сразу норм выводит, а потом на где-то логика нарушается и неправильно выводит C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 15:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru