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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2007, 22:56   #1
Галечка
 
Регистрация: 06.11.2007
Сообщений: 3
Печаль С++ - задача со списками

Задача такая: Нужно описать функцию, которая объединяет 2 упорядоченных списка (по возрастанию) в один. Помогите,
пожалуйста!!!
Галечка вне форума Ответить с цитированием
Старый 06.11.2007, 23:02   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Мне кажется или такой вопрос уже был?
Carbon вне форума Ответить с цитированием
Старый 06.11.2007, 23:12   #3
Галечка
 
Регистрация: 06.11.2007
Сообщений: 3
По умолчанию

Не знаю, я ничего подобного не видела!.......
Галечка вне форума Ответить с цитированием
Старый 08.11.2007, 02:04   #4
Necrom
Пользователь
 
Регистрация: 08.11.2007
Сообщений: 14
По умолчанию

Код:
#ifndef _Dls_H
#define _Dls_H

struct point					//описание структуры
{
	char	  key;				//ключевое поле
	point	* pred,
			* next;				//адресные поля
};

class DLinesp 
{
public:
	point*make_list();
	void print_list(point *beg);	
};

#endif
Код:
#include <iostream>
#include <stdlib.h>
#include "Dls.h"
using namespace std;

point* DLinesp::make_list ()
{
	int n;
	cout<<"Quantity charact: ";
	cin>>n;
	point	 *p,				//Начало списка
			 *r,				//
			 *beg;				//Переменная которая хранит начало списка
	p=new (point);				//создать первый элемент
	beg=p;						//запомнить адрес в переменную beg, в которой хранится начало списка
	cout<<"Value: ";
	cin>>p->key;				//заполнить ключевое поле

	p->pred=0;
	p->next=0;					//заполнить адресные поля
	for(int i=1;i<n;i++)		//добавить элементы в конец списка
	{
		r=new(point);			//новый элемент
		cin>>r->key;			//адресное поле
		p->next=r;				//связать начало списка с r
		r->pred=p;				//связать r с началом списка
		r->next=0;				//обнулить последнее адресное поле
		p=r;					//передвинуть p на последний элемент списка
	}
	return beg;					//вернуть первый элемент списка
}
void DLinesp::print_list(point *beg)
{
	if (beg==0)					//если список пустой
	{
		cout<<"The list is empty\n";
		return;
	}
	point*p=beg;
	while(p)					//пока не конец списка
	{
		cout<<p->key;
		p=p->next;				//перейти на следующий
	}
	cout<<"\n";
}
Код:
#include <iostream>
#include "Dls.h"
using namespace std;

void main()
{
	DLinesp dls;
	point*beg;
	int i;
	do
	{
		cout<<"1.Make list\n";
		cout<<"2.Print list\n";
		cout<<"Enter value flags: ";
		cin>>i;
		switch(i)
		{
		case 1:
			{
				beg=dls.make_list();
				break;
			}
		case 2:
			{
				dls.print_list(beg);
				break;
			}		
		}
	}
	while(i!=2);
}
Это Линейный двунаправленный список. В качестве дз Осталось дописать.
Necrom вне форума Ответить с цитированием
Старый 08.11.2007, 23:05   #5
Галечка
 
Регистрация: 06.11.2007
Сообщений: 3
Радость

Спасибо огромное!!!))))
Галечка вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просьба помочь новичку со списками. cbst Общие вопросы C/C++ 4 13.06.2008 19:32
Работа со списками Dimo444ka Помощь студентам 2 01.06.2008 16:34
Задача/C++ Stan Помощь студентам 2 24.01.2008 20:33
Работа со списками. radist Паскаль, Turbo Pascal, PascalABC.NET 4 07.05.2007 00:05