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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2010, 23:39   #1
Lexeres
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 54
По умолчанию Исправление небольших ошибок - СПИСКИ

помогите пожалуйста исправить небольшие ошибки, а то сам замучался

Код:
#include <alloc.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

typedef struct node
{
int data;
char data1[30];
struct node *next;
} ITEM;

ITEM* add_node(ITEM* head, int new_data, char new_data1)
{
	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;
	new_item->data1[30]=new_data1;
	if(head==NULL)
	{
		puts("Spisok sozdan");
		new_item->next=NULL;
		return new_item;
	}
	if((head->data<new_data)&&(head!= new_data))
	{

		printf("Element dobavlen\n");
		new_item->next=head;
		return new_item;
	}
	prev=head;
	
}
ITEM* udal_node(ITEM* head, int udal_data)
{

ITEM *cur, *prev;
prev=NULL;
cur=head;
while(cur!=NULL && cur->data>=udal_data)

{
	if(cur->data==udal_data)
	{
	   while(cur->data==udal_data)
  	{

	printf("Ydalenie elementa %d\n ",cur->data);
	if(prev==NULL)
	 {

	head=head->next;
	 }
	else
	 {

	prev->next=cur->next;
	 }
	free(cur);
	cur=cur->next;
}}


prev=cur;
cur=cur->next;
}
printf("Element  %d otsytstvyet v spiske \n ",udal_data);
return head;
}

ITEM* poisk_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 naiden\n",find_data);
			return cur;
		}
	}
	printf("Element %d ne naiden \n",find_data);
	return NULL;
}
ITEM* vyvod_node(ITEM* head)
{	ITEM *cur;
	cur=head;
	while(cur!=NULL)
	{   printf("%d\n",cur->data);
	     printf("%s\n",cur->data1);
	     cur=cur->next;
}}

ITEM* recurs_node(ITEM* head)
	{ ITEM *cur;
		cur=head;
	if (cur<=cur->next)
	{
		return cur;
	}
	else
	{
		return cur->next;
	}
	while(cur!=NULL)
	{
	printf("%d\n",cur->data);
	printf("%s\n",cur->data1);
	cur=cur->next;
	}
}



int main()
{
	ITEM *Head=NULL;
	char data1[30];
	char key;
	int data;
	while(1)
	{
		clrscr();
		puts("1 - Dobavit' element");
		puts("2 - Udalit' element");
		puts("3 - Naiti element");
		puts("4 - Vyvod spiska");
		puts("5 - spec. funkciya");
		puts("ESC - Quit");
		key=getch();
		switch(key)
		{
		case '1':
			puts("Vvedite chislo");
			scanf("%d",&data);
			Head=add_node(Head,data,data1[30]);
			break;
		case '2':
			puts("Vvedite chislo");
			scanf("%d",&data);
			Head=udal_node(Head,data);
			break;
		case '3':
			puts("Vvedite chislo");
			scanf("%d",&data);
			poisk_node(Head,data);
			break;
		case '4':
			puts("spisok\n");
			vyvod_node(Head);
			break;
		case '5':
			puts("spisok\n");
			recurs_node(Head);
			break;

		case 27:
			puts("Quit");
			return 0;
		} getch();
	}
	return 0;
}
вот какие задания:

1) одно число целого типа (уникальный номер) и один символ
2) Создать функцию для добавления элементов в упорядоченный по убыванию список исключающий добавление повторяющихся элементов
3) Удаление всех элементов (т.е. список может содержать повторяющиеся элементы) в списке по переданным данным
4) Последовательный поиск до конца
5) Функция вывода списка (последовательный проход по списку с выводом значений элементов на экран)
6) Дополнительная функция: Функция которая выводит на печать список в обратном порядке (использовать рекурсию).

То, что я выделил, то работает, а последния два пункта ну никак, еесли 5-ый ещё полуработает(выводит на экран, но с "кракозябрами") , то шестой пункт я сам не очень помню рекурсию...

Lexeres вне форума Ответить с цитированием
Старый 06.04.2010, 15:56   #2
Lexeres
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 54
По умолчанию

Хелп, плз
Lexeres вне форума Ответить с цитированием
Старый 07.04.2010, 14:40   #3
Lexeres
Новичок
Джуниор
 
Регистрация: 15.11.2009
Сообщений: 54
По умолчанию

пожалуйста помогите
Lexeres вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу опробовать исправленную PGF 1.3 - автоматическое исправление структурных ошибок в исходниках Delphi Vasil54 Софт 0 01.05.2009 21:00
Просьба опробовать новую PGF 1.3 - автоматическое исправление структурных ошибок в исходниках Delphi. Vasil54 Софт 0 09.04.2009 12:05
Просьба опробовать новую версию PGF - автоматическое исправление структурных ошибок в исходниках Delphi. Vasil54 Софт 0 05.12.2008 20:06
Исправление ошибок. игра Викторина Vladya Помощь студентам 3 23.11.2008 21:38
Исправление ошибок в проге Juhn Паскаль, Turbo Pascal, PascalABC.NET 11 16.01.2008 18:17