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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2011, 23:17   #1
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
Сообщение списки

при запуску програмы V S выбивает ошибку, похоже я гдето накосячил в функции которая создаёт элементы в конце листа из-за этого компилятор ругаетса когда доходит до функции которая получает адрес элемента списка, В чём я ошибся?
Код:
#include "stdafx.h"
#include "iostream"
#include "ctime"

using namespace std;


struct List 
{
	int val;
	List *before;
	List *next;
} *My_List, *M_List;

void Delete_List (List *first) //1
{
	List *tmp;
	tmp = first->next;
	while (tmp->next!=NULL)
	{
		delete []first;
		tmp = tmp->next;
		first = tmp ;

	}

}
List *Add_to_List_End(List *first, int x)//2
{
	List *element;
	element = new List;
	element->val=x;
	if(!first) 
	{
		element->before=NULL;
		element->next=NULL;
		return element;
	}
	if (element->next)
	{
	element->before = first;
	element->next = first->next;
	first->next = element;
	return element;
	}
	
}
int Get_Position (List *Current)//5
{
	if (Current->before==NULL)
	{
		return 1;
	}
	else
	{
	for( int i=1 ; Current->before = NULL; Current=Current->before , i++ )
		return i;
	}
}
List *Insert_of_Element_after (List *Current, int x)//9
{
	List *New = new List;
	New->val = x;
	New->before = Current;
	New->next = Current->next;
	Current->next = New;
	return New;
}
	void Print_List(List *first)//10
{
	for(first;first->next!=NULL;first=first->next)
	{
		cout<<first->val<<" ";
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	M_List = My_List;
	Add_to_List_End(My_List, 10);
	Add_to_List_End(My_List, 9);
	Add_to_List_End(My_List, 8);
	Add_to_List_End(My_List, 7);
	Get_Position (My_List);
	List *New;
	New = My_List->before;
	Insert_of_Element_after (New,100);
	Print_List (M_List);
	Delete_List (M_List);

	return 0;
}

Последний раз редактировалось mansp; 05.02.2011 в 20:50. Причина: поправил
mansp вне форума Ответить с цитированием
Старый 05.02.2011, 20:30   #2
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

похоже проблема в той части кода где я проверяю пустой данный список или нет
Код:
if(!first) 

	{

		element->before=NULL;

		element->next=NULL;

		return element;

	}
mansp вне форума Ответить с цитированием
Старый 05.02.2011, 21:53   #3
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

с добавлением в конец списка разобрался но столкунлся с проблемой получения номера елемента в списке
вот код
Код:
int Get_Position (List *Current)//5
{
	if (Current==NULL)
	{
		return 1;
	}
	else
	{
		int i=0;
		while(Current->before!=NULL)
		{
			i++;
			Current=Current->before;
		}
		return i;
	}
}
при запуске выбивает ошибку может я поставил неправильное условие выхода из цикла? незнаю как сделать по другому
ошибка: Необработанное исключение в "0x004114ad" в "asdfasdf.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcdd1".

Последний раз редактировалось mansp; 05.02.2011 в 22:00.
mansp вне форума Ответить с цитированием
Старый 06.02.2011, 14:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю свое классическое видение работы со списками:
http://www.programmersforum.ru/showp...8&postcount=36
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки. Skyriver Помощь студентам 1 16.06.2010 00:21
Списки KyJIJIEP Общие вопросы C/C++ 0 01.06.2010 21:47
списки sergeykl Паскаль, Turbo Pascal, PascalABC.NET 8 04.08.2009 23:05
Списки? Chainic Microsoft Office Excel 13 06.05.2009 22:53