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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2010, 13:23   #1
100lnikov
Новичок
Джуниор
 
Регистрация: 28.02.2010
Сообщений: 1
По умолчанию Односторонний динамический список (struct)

Само задание: Создать односторонний список (вводим цифры, для завершения создания списка вводим "0").
Допустим получаем такой список:
1 3
2 6
3 2
4 23
5 1
6 8
Потом вводим номер в списке, например, 5. И тогда программа должна вставить значение 5 элемента, т.е. "1", перед элементом, чей номер равен значению 5-го номера в списке (то есть в данном случае перед 3).
Получим список:
1 1
2 3
3 6
4 2
5 23
6 1
7 8
Получилось написать почти рабочую версию, но проблема именно в том случае, когда вводим номер в списке, под которым значится "1". Никак получается вставить перед 1 элементом
В коде удалил часть отвечающую за сортировку, т.к. там сам черт ногу сломит. Ах, да... все переменные в программе должны быть локальными.
Надеюсь на вашу помощь
КОД(devcpp):
Код:
#include <stdio.h>
#include <stdlib.h>
int i=1;
struct el { int duom;
            struct el *next;
          };

void create_list ( struct el ** , struct el** );
void print_list ( struct el * );
void delete_list ( struct el ** , struct el** );

int main()
{
   struct el *pradzia, *pabaiga, *elem; int x; // pradzia - начало, pabiga - конец
   create_list ( &pradzia, &pabaiga );
   print_list ( pradzia );
   delete_list ( &pradzia, &pabaiga );
   system("PAUSE");
   return 0;
}

/* Создаем список */
void create_list ( struct el * *pr, struct el * *pab )
{
  struct el *g;
  int zna4enie;
  puts ("Vvedite elementi spiska. 4tobi zakon4it', vvedite 0:" );
  *pr = NULL; // pr- head spiska
  *pab = NULL; // pab - tail spiska
  scanf("%d", &zna4enie);
  while( zna4enie != 0 )
   {
     if ( *pr == NULL)
       {
         g = (struct el *) malloc(sizeof(struct el));
         g->duom = zna4enie;
         g->next = NULL;
         *pab = g;
         *pr = g;
       }
     else
       {
         g = (struct el *) malloc(sizeof(struct el));
         g->duom = zna4enie;
         g->next = NULL;
        (*pab)->next = g;
         *pab = g;
       }
     scanf( "%d", &zna4enie );
    }
    printf("Spisok uda4no sozdan\n");
}

/* Печатаем список */

void print_list (struct el *elem)
{

    puts("*****************************************");
    puts("Pe4ataem spisok:");
    while ( elem != NULL )
       {
        printf( "%d element  %d\n",i,elem->duom );
        elem = elem->next;
        i++;
       }
       printf("\n");
       i = 1;
}

/*  */
/* Удаляем список */
void delete_list ( struct el * *pr, struct el * *pab )
{
    struct el *idem;

    puts("*****************************************");
    puts("Udaliaem spisok s konca:");
    while (*pr != NULL)
      {
      idem = *pr;
      if ( *pab != *pr )
         {
         while ( idem->next != *pab )
         idem = idem->next;
         *pab = idem;
          printf(" %d ", idem->next->duom );
         free ( idem->next );
         }
       else
         {
         printf( " %d. \n ", idem->duom );
         free ( idem );
         *pr = NULL;
         *pab = NULL;
         }
       }
}
100lnikov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический список ... doseras JavaScript, Ajax 0 08.12.2009 17:06
[Delphi] TStringGrid + динамический список dee_lv Помощь студентам 3 27.04.2008 03:00
Динамический список...на Delphi Olgasato Помощь студентам 6 11.12.2007 15:02
Динамический список (срочно!) Achtung-Partizanen Помощь студентам 4 08.05.2007 16:08