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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2014, 22:12   #1
uibiwe
Пользователь
 
Регистрация: 08.03.2013
Сообщений: 10
По умолчанию динамические структуры

есть ли другие пути решения этой задачи, если есть то напишите,
или измените программу (другу нужно помочь) а то препод уже рассматривал эту задачу)) нужно просто код изменить чтоб было видно что делал другой человек
Код:
// Задача № 8. Динамические структуры данных (для всех вариантов)
Связанный линейный список — это набор узлов Node (тип данных структура(С++) или запись(Pascal)), каждый из которых имеет поле данных и поле адреса - указатель (ссылку) на следующий узел в списке. Тот, в свою очередь, тоже содержит поле данных и ссылку на продолжение списка. Последний узел списка содержит значение NULL (Nil), т.е. уже ни на что не ссылается. Начало списка формирует переменная head  типа “указатель”, содержащая адрес первого узла списка. Поле данных еще называют информационной частью списка, поле адреса – адресной частью.
struct  Node {
int data;                          // поле данных
Node* link;               // поле адреса – указатель на следующий узел
};
Node* head=NULL;

Опишите функции типовых операций с списками:
1.	Функция  AddHead (int d) добавление узла в голову списка; 
2.	Функция  AddEnd (int d) добавление узла в конец списка; 
3.	Функция ShowList() вывод списка на экран; 
4.	Функция Search( int d) поиск узла с заданным значением в некотором поле данных; 
5.	Функция FindNode ( int n) поиск узла с заданным номером; 
6.	Функция InsertNode(int d, int n) добавление нового узла непосредственно перед узлом с заданным значением в некотором поле; 
7.	Функция RemoveNode(int d) удаление узла с заданным значением в некотором поле; 
8.	Функция RemoveAll() удаление всего списка ; 

#include <iostream>
using namespace std;

struct Node
{
	int d;
	Node* link;
};
Node* head=0;

//добавление узла в голову списка
Node* AddHead (Node* head, int dt)
{
	Node* temp=new Node;
	temp->link=head;
	temp->d=dt;
	head=temp;
	return head;
}

//добавление узла в конец списка
void AddEnd (Node* head, int dt)
{
	Node* temp=new Node;
	temp->d=dt;
	temp->link=0;

	Node* temp1=head;
	while (temp1->link)
	{
		temp1=temp1->link;
	}
	temp1->link=temp;
}

//вывод списка на экран
void ShowList(Node* head)
{
	Node* temp=head;
	if(!head) 
	{
		cout << "Spiska net." << endl;
		return;
	}

	while (temp)
	{
		cout << temp->d;
		temp=temp->link;
	}
}

//поиск узла с заданным значением в некотором поле данных
Node* Search(Node* head, int dt)
{
	Node* temp=head;
	while(temp->d!=dt)
	{
		temp=temp->link;
	}
	return temp;
}


//поиск узла с заданным номером
Node* FindNode(Node* head, int pos)
{
	Node* temp=head;
	pos--;
	while(temp&&pos)
	{
		pos--;
		temp=temp->link;
	}
	return temp;
}
//добавление нового узла непосредственно перед узлом с заданным значением в некотором поле
Node* InsertNode(Node* head, int dt, int n) 
{
	Node* temp=head;
	Node* prev=0;
	while(temp->d!=n)	// ищем узел с нужным значением n, а также предыдущий узел
	{
		prev=temp;
		temp=temp->link;
	}
	
	if(!prev) return AddHead (head, dt);  // если нужный узел в голове, вставляем новую голову
	
	Node* temp1=new Node;
	temp1->link=prev->link;
	temp1->d=dt;
	prev->link=temp1;
	
	return head;
}
//удаление узла с заданным значением в некотором поле
void RemoveNode(Node* head, int dt) 
{
	Node* prev=head;
	Node* temp=head->link;
	
	if(head->d==dt)
	{
		head=head->link;
		delete prev;
		return;
	}
	
	while(temp->d!=dt)
	{
		prev=temp;
		temp=temp->link;
	}
	
	prev->link=temp->link;
	delete temp;
}



//удаление всего списка 
Node* RemoveAll(Node* head) 
{
	Node* temp=head;
	while(temp)
	{
		head=temp;
		temp=temp->link;
		delete head;
	}
	return head;
}
//главная
int main()
{
	head=new Node;	//создание первого узла "5"
	head->d=5;
	head->link=0;

	for (int i=0;i<4;i++)	//добавление узлов "6","7","8","9"
		AddEnd(head,i+6);

	ShowList(head);


	head=AddHead(head,4); 	//добавление узла "4"
	ShowList(head);


	AddEnd (head,10);	//добавление узла "10"
	ShowList(head);

	cout << Search(head, 8) << endl; //поиск адреса узла со значением "8"

	cout << FindNode(head, 2) << endl; //поиск адреса узла с номером 2

	head=InsertNode(head,-7,8); // добавление узла "-7" перед узлом со значением "8"
	ShowList(head);

	RemoveNode(head, 8); //удаление узла со значением "8"
	ShowList(head);

	head=RemoveAll(head); //
	ShowList(head);
	system("pause");
	return 0;
}
uibiwe вне форума Ответить с цитированием
Старый 20.01.2014, 13:16   #2
nikolay1982
Пользователь
 
Регистрация: 31.12.2013
Сообщений: 47
По умолчанию

Хотя бы можно переименовать локальные переменные функций.
Добавить изобилие своих комментариев.

Последний раз редактировалось nikolay1982; 20.01.2014 в 13:20.
nikolay1982 вне форума Ответить с цитированием
Старый 20.01.2014, 13:23   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ну, чувак, я тебе могу сказать только одно: обломись. А вот причины:
1) Код не твой
2) Ты в коде не разбирался
3) Ты не просишь, ты требуешь
3.1) Причем нахаляву
4) Я ненавижу халявщиков
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры Си Praud Помощь студентам 17 10.03.2013 14:00
Динамические структуры Вероника92 Помощь студентам 0 15.12.2012 15:08
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
Динамические структуры danilqa Паскаль, Turbo Pascal, PascalABC.NET 2 11.04.2011 12:16
Динамические структуры в С++ Aleksa_ks Помощь студентам 0 04.05.2010 21:50