Advertisement
InnaSibirova

M6

Oct 30th, 2022 (edited)
1,115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.83 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct list                            // создаём структуру
  5. {
  6.   int field;
  7.   struct list *next;
  8.   struct list *prev;
  9. };
  10. struct list * init(int a)          // функция инициализации списка
  11. {
  12.   struct list *lst;
  13.   lst = (struct list*)malloc(sizeof(struct list));
  14.   lst->field = a;
  15.   lst->next = NULL;
  16.   lst->prev = NULL;
  17.   return(lst);
  18. }
  19. struct list * addelem(list *lst, int number) // функция добавления элемента
  20. {
  21.   struct list *temp, *p;
  22.   temp = (struct list*)malloc(sizeof(list));
  23.   p = lst->next;
  24.   lst->next = temp;
  25.   temp->field = number;
  26.   temp->next = p;
  27.   temp->prev = lst;
  28.   if (p != NULL)
  29.     p->prev = temp;
  30.   return(temp);
  31. }
  32. void listprint(list *lst)    // функция вывода списка
  33. {
  34.   struct list *p;
  35.   p = lst;
  36.   do {
  37.     printf("%d ", p->field);
  38.     p = p->next;
  39.   } while (p != NULL);
  40. }
  41. int main() {
  42.     list *p1, *cur;  // создаём указатель p1 и переменный указатель
  43.     int num = 1;
  44.     p1 = init(num);    // инициализируем список
  45.     cur = p1;
  46.     for (int i = 2; i < 8; i++) {  // создаём новые элементы (до 7)
  47.         num = i;
  48.         cur = addelem(cur, num);
  49.     }
  50.     listprint(p1);      // выводим список
  51.     printf("\n");
  52.     cur = p1;
  53.     cur = addelem(cur, cur->field);
  54.     while(cur->next != NULL) {            //делаем дублирование элементов с нечетными номерамаи
  55.         cur=cur->next;                    //при этом вставляем копии перед оригиналами
  56.         if(cur->field % 2 != 0) {
  57.             cur = addelem(cur->prev, cur->field);
  58.             cur=cur->next;
  59.         }
  60.        
  61.     }
  62.    
  63.     listprint(p1); // выводим полученный список
  64.    
  65.     return 0;
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement