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

динамический список - C++

Восстановить пароль Регистрация
 
Boooze
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 4
14.11.2010, 19:38     динамический список #1
Всем здраствуйте .
В проге надо создать динамический список и реализовать всякие функции для редактирования и преобразования элементов дин.списка.
Вот для начала код списка ,а так же ввода и вывода данных из него:
Код:
Код
#include <stdio.h>
#include <conio.h>
#include <string.h>

struct info
{
int nomer;
char model [20];
char proi [20];
};

struct elem
{
info har;
elem *next;
};

elem *first, //указатель начала списка 
     *last,   //указатель на очередной элемент
     *list;   //указатель на элементы списка

int n;

void vvod (){

int zn;
printf ("Vvedite dannie\n");
n = 1;
first = new elem;
(*first).har.nomer = n;
printf ("\nVvedite model:");
scanf ("%s", (*first).har.model);
printf ("\nVvedite proizvoditelya:");
scanf ("%s", (*first).har.proi);
first ->next = NULL;
last = first;
int flag = 1;
while (flag)
{
printf ("prodoljit?\n 1-da\n 0-net\n");
scanf ("%d", &flag);
clrscr();
if (flag){
n++;
list = new elem;
(*list).har.nomer = n;
printf ("\nVvedite model");
scanf ("%s", (*list).har.model);
printf ("\nVvedite proi:");
scanf ("%s", (*list).har.proi);
list->next = NULL;
last->next = list;
last=list;
}
}
}

void vivod (){
list = first;
clrscr;
while (list)
{
printf ("nomer: \t");
printf ("%d\n",(*list).har.nomer);
printf ("model: \t");
printf ("%s\n",(*list).har.model);
printf ("proizvoditel: \t");
printf ("%s\n",(*list).har.proi);
list=list->next;
}
getch();
}
Для начала у меня возникают проблемы в следующем:
При поиске по списку:
Код:
elem *poisk(){


			char mod;
			int flag;
			printf("введите модель = ");
			scanf("%d",&mod);
			list=last=first;
			while ((last)&&(last->har.model!=mod))
				{
				last=list;
				list=list->next;
				}
			if(!last)  printf("элемент не найден\n");
			else printf("номер %d  модель %s производитель \n" ,(*last).har.nomer,(*last).har.proi,(*last).har.model);
При поиске выдает ошибку на last->har.model!=mod,пишет cannot conver char to char * .но если делать поиск не по символьному полю ,а по числовому (например по номеру) то все в порядке.
2.Вторая проблема при добавлении элемента в конец списка:
Код:
Код
void aite()
{
	char mod[20];
	char inc[20];
	n++;
	last=first;
	while(last->next) last=last->next;
	list=new elem;
	(*list).har.nomer=n;
       	printf("\nvvedite model telephona :\n ");
	scanf("%s",mod);
	(*list).har.model=mod;
	printf("\nvvedite proizvoditelya telephona : \n");
	scanf("%s",&inc);
	(*list).har.proi=inc;
	
	list->next=NULL;
	last->next=list;
getch();
}
Ошибку выписывает на (*list).har.model=mod; и пишет "lvalue required".
3.Как прроизвести обмен элементов заданного мною списка?
Для начала я ввожу ,например,две переменные n1 и n2.
Затем ставлю указатель last и list на элементы списка ,у которых значения определенных полей совпало с введенными значениями в переменные n1 и n2.могу ли я дальше поменять элементы в списке следующим образом :
Код:
Код
last=temp;   //temp - еще одна ссылка
last=list;
list=temp;
Заранее спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2010, 19:38     динамический список
Посмотрите здесь:

динамический список C++
Динамический список C++
Динамический список C++
Динамический список C++
C++ Динамический список
Динамический список C++
C++ Динамический список
C++ Динамический список
динамический список C++
Динамический список C++
C++ Динамический список
Динамический двунаправленный список C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.11.2010, 06:00     динамический список #2
strcpy() для копирования строк

могу ли я дальше поменять элементы в списке следующим образом
можешь поменять у них структуры har

а вообще там при обмене элементов нужно указатели next заново устанавливать обычно
Boooze
0 / 0 / 0
Регистрация: 20.10.2009
Сообщений: 4
15.11.2010, 20:01  [ТС]     динамический список #3
хорошо ,а что насчет добавления и поиска?
при обмене то есть должно получиться, что временные ссылки надо указать на следующую запись?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.11.2010, 00:34     динамический список #4
при перестановке элементов, считай, ты их отсоединяешь, а потом снова вставляешь
то есть это надо все указатели и у них и на них устанавливать

а для поиска нужно юзать strcmp(), которая сравнивает строки
Yandex
Объявления
16.11.2010, 00:34     динамический список
Ответ Создать тему
Опции темы

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