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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2009, 19:11   #1
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
Подмигивание Помогите Доделать прогу со списком(List) на С++

Нужно создать список... а потом нужно удалить нужный по счету елемет(который вводит пользователь). Проблема в том что нельзя пользоватся итераторами и "#include <list>" а удалять елемент нужно - очищением памяти. Как это сделать??
Если помогла нажмите на весы

Последний раз редактировалось Olya90; 20.05.2009 в 21:30.
Olya90 вне форума Ответить с цитированием
Старый 20.05.2009, 21:02   #2
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Я сделала инициализацию и вывод списка... Но все-таки помогите сделать остальное)) (удалять елемент нужно - очищением памяти).
Код:
#include <iostream>
using namespace std;
struct list
{
	int key;
	list* next;
};
void init(list* &first)
{
	int n,value;
	list* curr;
	cout<<"Enter list size: ";
	cin>>n;
	first=new list;
	curr=first;
	for(int i=0;i<n;i++)
	{
		value=rand()%100;
		curr->key=value;
		if(i<n-1)
		{
			curr->next=new list;
			curr=curr->next;
		}
		else
			curr->next=0;
	}
}
void print(list* first)
{
	list* curr;
	for(curr=first;curr!=0;curr=curr->next)
		cout<<curr->key<<"  ";
	cout<<endl;
}

int main()
{
	list* first;
    init(first);
	print(first);
	system("pause");
}
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 20.05.2009, 21:31   #3
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

я не проверял, но что то вроде этого

Код:
void del (list* first)
{
           int n;
	list *curr,*prev;
	cout<<"Enter num to del: ";
	cin>>n;
           
           curr=first;
           while(curr)
           {
               if(curr->key==n)
               {
                     if(curr==first)
                     {
                          first=curr->next;
                          delete curr; // очищение памяти
                     }
                     else
                     {
                           prev->next=curr->next;
                           delete curr; // очищение памяти
                     }
                     cout<<"\nElement deleted!";
                     break;
                }
                prev=curr;
                curr=curr->next;
         }
}
counter вне форума Ответить с цитированием
Старый 20.05.2009, 21:38   #4
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Кажись что-то не так((. После удаление написала чтобы вывело список но он выводится неправильно((. Да и еще есть строчка cout<<"\nElement deleted!"; и она не отображается((
Код:
#include <iostream>
using namespace std;
struct list
{
	int key;
	list* next;
};
void init(list* &first)
{
	int n,value;
	list* curr;
	cout<<"Enter list size: ";
	cin>>n;
	first=new list;
	curr=first;
	for(int i=0;i<n;i++)
	{
		value=rand()%100;
		curr->key=value;
		if(i<n-1)
		{
			curr->next=new list;
			curr=curr->next;
		}
		else
			curr->next=0;
	}
}
void print(list* first)
{
	list* curr;
	for(curr=first;curr!=0;curr=curr->next)
		cout<<curr->key<<"  ";
	cout<<endl;
}

void del (list* first)
{
           int n;
	list *curr,*prev;
	cout<<"Enter num to del: ";
	cin>>n;
           
           curr=first;
           while(curr)
           {
               if(curr->key==n)
               {
                     if(curr==first)
                     {
                          first=curr->next;
                          delete curr; 
                     }
                     else
                     {
                           prev->next=curr->next;
                           delete curr; 
                     }
                     cout<<"\nElement deleted!";
                     break;
                }
                prev=curr;
                curr=curr->next;
         }
}

int main()
{
	list* first;
    init(first);
	print(first);
    del(first);
    print(first);
	system("pause");
}
Если помогла нажмите на весы

Последний раз редактировалось Olya90; 20.05.2009 в 22:05.
Olya90 вне форума Ответить с цитированием
Старый 21.05.2009, 00:08   #5
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Здесь нужно чтобы пользователь ввел какой по счету елемент нужно удалить.
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 22.05.2009, 22:17   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

надеюсь что не поздно...

Код:
#include <iostream>
#include<ctime>
using namespace std;
struct list
{
	int key;
	list* next;
};
void init(list* &first)
{
	int n,value;
	list* curr;
	cout<<"Enter list size: ";
	cin>>n;
	first=new list;
	curr=first;
	srand(time(NULL));
	for(int i=0;i<n;i++)
	{		
		value=rand()%100;
		curr->key=value;
		if(i<n-1)
		{
			curr->next=new list;
			curr=curr->next;
		}
		else
			curr->next=0;
	}
}
void print(list* first)
{
	list* curr;
	for(curr=first;curr!=0;curr=curr->next)
		cout<<curr->key<<"  ";
	cout<<endl;
}

void del (list* &first)
{
    int n;
	list *curr,*prev;
	
	cout<<"Enter num to del: ";
	cin>>n;
    
	int count=0;

           curr=first;
           while(curr)
           {
               if((count+1)==n)
               {
                     if(curr==first)
                     {
                          first=curr->next;
                          delete curr; // î÷èùåíèå ïàìÿòè
                     }
                     else
                     {
                           prev->next=curr->next;
                           delete curr; // î÷èùåíèå ïàìÿòè
                     }
                     cout<<"\nElement deleted!";
                     break;
                }
                prev=curr;
                curr=curr->next;
				count++;
         }
}

int main()
{
	list* first;
    init(first);
	print(first);
    del(first);
    print(first);
	system("pause");
}
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с списком(list,STL,C++) Alex1991 Помощь студентам 7 18.05.2009 21:36
помогите сделать прогу на СИ Sined121 Помощь студентам 1 07.04.2009 15:56
Помогите сделать задачи со списком. aleksandrdss Помощь студентам 2 13.03.2009 12:00
Помогите сделать прогу AG_Mill Помощь студентам 2 25.04.2008 19:44