Где ошибка! - 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 */

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы