Где ошибка! - C (СИ)
Формулировка задачи:
где ошибка!
#include <stdio.h> #include <conio.h> #include <alloc.h> typedef struct EList{ char data; struct EList *next; } EList; EList* AddElem( EList*, char ); /* Включение элемента */ void AddElem2( EList*, char ); void PrnList( EList* ); /* Печать списка */ void main(){ EList* Head=NULL; /* Указатель на голову списка */ EList* t; char c; /* Ввод данных и формирование списка */ printf("\nВведите символы-элементы списка (завершение ввода-пробел)."); printf("\nСимволы вводить без Enter после каждого символа"); printf("\nВводите;"); while( (c = getch()) != ' ' ){ putch( c ); Head = AddElem( Head, c ); } /* Вывод результатов */ printf( "\nРезультат:" ); PrnList( Head ); /* */ printf("\nВведите новый символ-элемент списка "); putch(c); AddElem2( Head, c); /* Вывод результатов */ printf( "\nРезультат:" ); PrnList( Head ); /* Освобождение памяти, занятой списком */ while( Head != NULL ){ t = Head; Head = Head->next; free( t ); } }/* main */ void AddElem2( EList *h, char inf ) { EList *buf; buf = (EList *)malloc( sizeof( EList ) ); buf->data = inf; buf->next = NULL; while ( (h->next) !=NULL)h=h->next; h->next=buf; }; EList *AddElem( EList *h, char inf ) /*********** AddElem ********** Действие: Включает элемент в голову списка. Параметры: h - указатель на голову списка, inf - информационная часть добавляемого элемента. Возвращает: указатель на голову списка или NULL, если нет памяти для нового элемента. Замечания: - */ { EList *buf; if( !( buf = (EList *)malloc( sizeof( EList ) ))) return( NULL ); buf->data = inf; buf->next = h; return( buf ); }/* AddElem */ void PrnList( EList *h ) void PrnList( EList *h ) /*********** PrnList ********** Действие: Печатает список. Параметры: h - указатель на голову списка, Возвращает: - Замечания: - */ { printf( "\nСписок имеет следующий вид: " ); while( h != NULL ){ printf( "%c", h->data ); h = h->next; } { EList* Head=NULL; /* Указатель на голову списка */ EList* t; char c;} }/* PrnList */
Решение задачи: «Где ошибка!»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <alloc.h> typedef struct EList{ char data; struct EList *next; } EList; EList* AddElem( EList*, char ); /* Включение элемента */ [COLOR="Red"]void AddElem2( EList*, char );[/COLOR] void PrnList( EList* ); /* Печать списка */ void main(){ EList* Head=NULL; /* Указатель на голову списка */ EList* t; char c; /* Ввод данных и формирование списка */ printf("\nВведите символы-элементы списка (завершение ввода-пробел)."); printf("\nСимволы вводить без Enter после каждого символа"); printf("\nВводите;"); while( (c = getch()) != ' ' ){ putch( c ); Head = AddElem( Head, c ); } /* Вывод результатов */ printf( "\nРезультат:" ); PrnList( Head ); /* */ [COLOR="Blue"][COLOR="#ff0000"]printf("\nВведите новый символ-элемент списка "); putch(c); AddElem2( Head, c);[/COLOR] /* Вывод результатов */ printf( "\nРезультат:" ); PrnList( Head ); [/COLOR] /* Освобождение памяти, занятой списком */ while( Head != NULL ){ t = Head; Head = Head->next; free( t ); } }/* main */ [COLOR="#ff0000"] void AddElem2( EList *h, char inf ) { EList *buf; buf = (EList *)malloc( sizeof( EList ) ); buf->data = inf; buf->next = NULL; while ( (h->next) !=NULL)h=h->next; h->next=buf; };[/COLOR] EList *AddElem( EList *h, char inf ) /*********** AddElem ********** Действие: Включает элемент в голову списка. Параметры: h - указатель на голову списка, inf - информационная часть добавляемого элемента. Возвращает: указатель на голову списка или NULL, если нет памяти для нового элемента. Замечания: - */ { EList *buf; if( !( buf = (EList *)malloc( sizeof( EList ) ))) return( NULL ); buf->data = inf; buf->next = h; return( buf ); }/* AddElem */ void PrnList( EList *h ) void PrnList( EList *h ) /*********** PrnList ********** Действие: Печатает список. Параметры: h - указатель на голову списка, Возвращает: - Замечания: - */ { printf( "\nСписок имеет следующий вид: " ); while( h != NULL ){ printf( "%c", h->data ); h = h->next; } { EList* Head=NULL; /* Указатель на голову списка */ EList* t; char c;} }/* PrnList */