Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
jpj
0 / 0 / 0
Регистрация: 21.04.2018
Сообщений: 22
Завершенные тесты: 1
1

Связный список: вставить в список перед каждым вхождением элемента K элемент L

27.06.2018, 22:23. Просмотров 222. Ответов 5

Разработать программу, которая создает список, элементами которого являются целые числа.
Вставляет в список перед каждым вхождением элемента k элемент l.
*Печатает модифицированный список по пять элементов в строке.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <stdlib.h>
 struct list
    {        int data;
             struct list *next;
    };
 
int main(int argc, char *argv[])
{
     int n,i, l, k, f=0;
     struct list *plist,*head, *q ;
 
    printf ("Input what: ");
    scanf ("%d",&l);
    printf ("Input previous? ");
    scanf ("%d",&k);
 
    printf ("Input N: ");
    scanf("%d",&n);
 
    plist=malloc(sizeof(struct list));
    head=plist;             
 
    i=1;
    do
    {
       scanf("%d",&plist->data);
       plist->next=malloc(sizeof(struct list));
       plist=plist->next;
    }
    while (++i<n);
    scanf("%d",&plist->data);
    plist->next=0;
 
 
 
 
 
plist=head;        // Вывод списка
    while (plist!=0)
    {
       printf("%d ",plist->data);
       plist=plist->next;
    }
    printf("\n");
 
 
 
plist=head;
 
while(plist->next!=0){
while (plist->data!=k && plist->next!=0) plist=plist->next; 
       if (plist->data==k)
       {      q=malloc(sizeof(struct list));
               *q=*plist;     //  или q->data=plist->data; q->next=plist->next;
               plist->data=l; plist->next=q;} /*на место нового элемента перепишем значение элемента k
**************************** и значение указателя на следующий за ним элемент,
**************************** а на освободившееся место - значение нового элемента l и в его поле next значение адреса q*/
            plist->next=q->next;
            plist=plist->next;}
 
 
 plist=head;     // Вывод списка
 if (plist!=0)
       do
       {  for(i=0; i<5; i++){
           if(plist!=0){
          printf("%d ",plist->data);
          plist=plist->next;
           }
          }
          printf("\n"); i=0;
       }
      while (plist!=0);
 
    printf("\n");
    system("PAUSE");
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2018, 22:23
Ответы с готовыми решениями:

Дан символ C и строки S, S0. Перед каждым вхождением символа C в строку S вставить строку S0
Задание :Дан символ C и строки S, S0. Перед каждым вхождением символа...

Перед каждым вхождением символа C в строку S вставить строку S0
Гайз, прошу вашей помощи. Пытаюсь решить следующую задачу: &quot;Дан символ C и...

Связный список. Необходимо создать новый связный список только из положительных элементов
Задача: Прочитать из файла связный список. Потом из этого списка создать еще...

Изменить код. Даны две строки и символ С. Перед каждым вхождением c в строку S вставить строку S0
Есть рабочий код, но нужно избавиться от указателей #include &lt;stdio.h&gt;...

Перед каждым положительным элементом массива вставить нулевой элемент
Задан вещественный массив размера N. Перед каждым положительным элементом...

5
Biger18
151 / 143 / 87
Регистрация: 13.06.2018
Сообщений: 624
28.06.2018, 09:42 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct list *p=head;
while(plist->next)
{
   while (plist->data!=k && plist->next) 
   {
    p=plist;
    plist=plist->next; 
   }
       if (plist->data==k)
       {      
         q=malloc(sizeof(struct list));
         q->next=plist;
         q->data=l;
         if(p==head) head=q;
         else p->next=q;
1
jpj
0 / 0 / 0
Регистрация: 21.04.2018
Сообщений: 22
Завершенные тесты: 1
28.06.2018, 11:07  [ТС] 3
почему-то не работает можете оставить комментарий? пожалуйста
0
Biger18
151 / 143 / 87
Регистрация: 13.06.2018
Сообщений: 624
28.06.2018, 11:18 4
p-предыдущий
0
jpj
0 / 0 / 0
Регистрация: 21.04.2018
Сообщений: 22
Завершенные тесты: 1
28.06.2018, 11:30  [ТС] 5
но почему не работает?
0
Biger18
151 / 143 / 87
Регистрация: 13.06.2018
Сообщений: 624
28.06.2018, 12:37 6
видимо от кода зависит
0
28.06.2018, 12:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2018, 12:37

Перед каждым отрицательным элементом массива вставить нулевой элемент
Вот условие задачи: Задан вещественный массив размера N. Перед каждым...

Написать функцию, которая добавляет новый элемент в связный список
Доброго времени суток, продолжаю изучать самостоятельно Си по книге Кочана...

Перед каждым символом * (звёздочка) вставить символ + (плюс)
По условиям нужно получать char с помощью gets(), что я и делаю, других...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru