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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 15:32   #1
Lexeres
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 54
По умолчанию Списки(отредактировать немного код нужно)

Вот есть у меня код списков на C :
Код:
#include <alloc.h>
#include <conio.h>

typedef struct node
{ 
    int data;
    struct node *next;
} ITEM;

ITEM* add_node(ITEM* head, int new_data)
{
	ITEM *new_item, *prev;
	new_item=(ITEM *)malloc(sizeof(ITEM)); 
	if(new_item==NULL)
	{
		puts("Oshibka vydeleniya pamyati");
		return head; 
	}
	new_item->data=new_data;
	if(head==NULL) 
	{
		puts("Spisok sozdan");
		new_item->next=NULL;
		return new_item; 
	}
	if(head->data>new_data)
	{
		
		printf("Element %d vstavlen v nachalo spiska\n",new_data);
		new_item->next=head;
		return new_item; 
	}
	prev=head;
	while(prev->next!=NULL) 
	{
		if(prev->next->data>new_data)
		{
			
			printf("Element %d vstavlen v seredinu spiska\n",new_data);
			new_item->next=prev->next;
			prev->next=new_item;
			return head; 
		}
		else
		{
			prev=prev->next;
		}
	}
	
	printf("Element %d vstavlen v konec spiska\n ",new_data);
	prev->next=new_item;
	new_item->next=NULL;
	return head; 
}

ITEM* delete_node(ITEM* head, int delete_data)
{
	ITEM *cur, *prev;
	prev=NULL;
	cur=head;
	while(cur!=NULL && cur->data<=delete_data)
	{
		if(cur->data==delete_data)
		{
			
			printf("Udalen element %d\n ",cur->data);
			if(prev==NULL)
			{
				
				head=head->next;
			}
			else
			{
				
				prev->next=cur->next;
			}
			free(cur);
			return head;
		}
		
		prev=cur;
		cur=cur->next;
	}
	printf("Element %d otsutstvuet v spiske\n ",delete_data);
	return head;

}

ITEM* find_node(ITEM* head, int find_data)
{
	ITEM *cur;
	cur=head;
	while(cur!=NULL && cur->data<=find_data)
	{
		if(cur->data==find_data)
		{
			printf("Element %d maiden\n",find_data);
			return cur;
		}
		
		cur=cur->next;
	}
	printf("Element %d ne naiden \n",find_data);
	return NULL;
}


int main()
{
	ITEM *Head=NULL; 
	char key; 
	int chislo; 
	while(1)
	{
		clrscr();
		puts("1 - Dobavit' element");
		puts("2 - Udalit' element");
		puts("3 - Naiti element");
		puts("ESC - Quit");
		key=getch();
		switch(key)
		{
		case '1': 
			puts("Vvedite chislo");
			scanf("%d",&chislo);
			Head=add_node(Head,chislo);
			break;
		case '2': 
			puts("Vvedite chislo");
			scanf("%d",&chislo);
			Head=delete_node(Head,chislo);
			break;
		case '3': 
			puts("Vvedite chislo");
			scanf("%d",&chislo);
			find_node(Head,chislo);
			break;
		case 27:
			puts("Quit");
			return 0;
		}
	}
	return 0;
}
вот что нужно переделать
1)Реализовать список на основе элементов, содержащих ссылку на след. элемент и данные - одного числа целого типа (уникальный номер) и один символ
2)Создать функцию для добавления элементов в упорядоченный по убыванию список исключающий добавление повторяющихся элементов
3)Удаление всех элементов (т.е. список может содержать повторяющиеся элементы) в списке по переданным данным .

Вроде бы тут редактировать мало нужно, но вот я проболел 2 недели и теперь не знаю как делать, а одногруппники сами не понимают как делать...
Подскажите плз что переделать под каждый пункт

Последний раз редактировалось Stilet; 18.03.2010 в 16:09.
Lexeres вне форума Ответить с цитированием
Старый 18.03.2010, 17:09   #2
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

1)
[code]typedef struct node
{
int data;
char data1
struct node *next;
} ITEM;
danekne вне форума Ответить с цитированием
Старый 18.03.2010, 17:34   #3
Lexeres
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 54
По умолчанию

Цитата:
Сообщение от danekne Посмотреть сообщение
1)
[code]typedef struct node
{
int data;
char data1
struct node *next;
} ITEM;
и чё ,это весь 1 номер ?? разве больше ничё изменять не нужно в других частях?
Lexeres вне форума Ответить с цитированием
Старый 18.03.2010, 19:42   #4
Lexeres
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 54
По умолчанию

Помогите пожалуйста, здесь немного поправить нужно... =(
Lexeres вне форума Ответить с цитированием
Старый 25.03.2010, 09:10   #5
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

1)Реализовать список на основе элементов, содержащих ссылку на след. элемент и данные - одного числа целого типа (уникальный номер) и один символ
Предложенная мной структура АБСОЛЮТНО отвечает поставленной задаче. Каков вопрос - таков ответ
danekne вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Немного не работает код лабораторной Sonyalex90 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.12.2009 22:53
Помогите немного уменьшить код С++ Olya90 Помощь студентам 10 06.10.2009 10:44
Ловушка на клаву(нужно немного улутшить ее) xshStasX Win Api 2 11.08.2008 15:50