Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 13.11.2017
Сообщений: 5
1

Двусвязный линейный список в си, исправьте ошибки !

15.11.2017, 20:19. Показов 1007. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот мой код:
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
#include <conio.h>
struct list
{
  int field; // поле данных
  struct list *next; // указатель на следующий элемент
  struct list *prev; // указатель на предыдущий элемент
};
struct list * init(int a)  // а- значение первого узла
{
  struct list *lst;
  // выделение памяти под корень списка
  lst = (struct list*)malloc(sizeof(struct list));
  lst->field = a;
  lst->next = NULL; // указатель на следующий узел
  lst->prev = NULL; // указатель на предыдущий узел
  return(lst);
}
struct list * addelem(list *lst, int number)
{
  struct list *temp, *p;
  temp = (struct list*)malloc(sizeof(list));
  p = lst->next; // сохранение указателя на следующий узел
  lst->next = temp; // предыдущий узел указывает на создаваемый
  temp->field = number; // сохранение поля данных добавляемого узла
  temp->next = p; // созданный узел указывает на следующий узел
  temp->prev = lst; // созданный узел указывает на предыдущий узел
  if (p != NULL)
    p->prev = temp;
  return(temp);
}
struct list * deletelem(list *lst)
{
  struct list *prev, *next;
  prev = lst->prev; // узел, предшествующий lst
  next = lst->next; // узел, следующий за lst
  if (prev != NULL)
    prev->next = lst->next; // переставляем указатель
  if (next != NULL)
    next->prev = lst->prev; // переставляем указатель
  free(lst); // освобождаем память удаляемого элемента
  return(prev);
}
void listprint(list *lst)
{
  struct list *p;
  p = lst;
  do {
    printf("%d ", p->field); // вывод значения элемента p
    p = p->next; // переход к следующему узлу
  } while (p != NULL); // условие окончания обхода
}
struct list * swap(struct list *lst1, struct list *lst2, struct list *head)
{
  // Возвращает новый корень списка
  struct list *prev1, *prev2, *next1, *next2;
  prev1 = lst1->prev;  // узел предшествующий lst1
  prev2 = lst2->prev;  // узел предшествующий lst2
  next1 = lst1->next; // узел следующий за lst1
  next2 = lst2->next; // узел следующий за lst2
  if (lst2 == next1)  // обмениваются соседние узлы
  {
    lst2->next = lst1;
    lst2->prev = prev1;
    lst1->next = next2;
    lst1->prev = lst2;
    next2->prev = lst1;
    if (lst1 != head)
      prev1->next = lst2;
  }
  else if (lst1 == next2)  // обмениваются соседние узлы
  {
    lst1->next = lst2;
    lst1->prev = prev2;
    lst2->next = next1;
    lst2->prev = lst1;
    next1->prev = lst2;
    if (lst2 != head)
      prev2->next = lst1;
  }
  else  // обмениваются отстоящие узлы
  {
    if (lst1 != head)  // указатель prev можно установить только для элемента,
      prev1->next = lst2; // не являющегося корневым
    lst2->next = next1;
    if (lst2 != head)
      prev2->next = lst1;
    lst1->next = next2;
    lst2->prev = prev1;
    if (next2 != NULL) // указатель next можно установить только для элемента,
      next2->prev = lst1; // не являющегося последним
    lst1->prev = prev2;
    if (next1 != NULL)
      next1->prev = lst2;
  }
  if (lst1 == head)
    return(lst2);
  if (lst2 == head)
    return(lst1);
  return(head);
}
А вот и ошибки:
Кликните здесь для просмотра всего текста
bcc32 command line for "File1.c"
[bcc32 Warning] conio.h(192): W8058 Cannot create pre-compiled header: code in header
[bcc32 Warning] File1.c(13): W8065 Call to function 'malloc' with no prototype
[bcc32 Error] File1.c(19): E2147 'list' cannot start a parameter declaration
[bcc32 Error] File1.c(22): E2451 Undefined symbol 'list'
[bcc32 Error] File1.c(22): E2109 Not an allowed type
[bcc32 Warning] File1.c(22): W8065 Call to function 'malloc' with no prototype
[bcc32 Error] File1.c(23): E2288 Pointer to structure required on left side of -> or ->*
[bcc32 Error] File1.c(24): E2288 Pointer to structure required on left side of -> or ->*
[bcc32 Warning] File1.c(27): W8075 Suspicious pointer conversion
[bcc32 Error] File1.c(32): E2147 'list' cannot start a parameter declaration
[bcc32 Error] File1.c(35): E2288 Pointer to structure required on left side of -> or ->*
[bcc32 Error] File1.c(36): E2288 Pointer to structure required on left side of -> or ->*
[bcc32 Error] File1.c(38): E2288 Pointer to structure required on left side of -> or ->*
[bcc32 Error] File1.c(40): E2288 Pointer to structure required on left side of -> or ->*
[bcc32 Warning] File1.c(41): W8065 Call to function 'free' with no prototype
[bcc32 Error] File1.c(44): E2147 'list' cannot start a parameter declaration
[bcc32 Warning] File1.c(47): W8075 Suspicious pointer conversion
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2017, 20:19
Ответы с готовыми решениями:

Линейный двусвязный список
Тип элемента списка определен так: struct llist{ int val; llist *next,*pred;}; //Создаётся...

Линейный Двусвязный список!
Задание:Создайте шаблон функции, которая удаляет из данного списка все элементы, не удовлетворяющие...

Двусвязный линейный список.
Нужно создать линейный двусвязный список....Нужно чтобы были такие процедуры или функции: Init -...

Двусвязный линейный список
Дан Двусвязный линейный список. ну например фамилия и имя. как сделать добавление в начало списка?...

1
Заклинатель змей
700 / 555 / 219
Регистрация: 30.04.2016
Сообщений: 2,591
15.11.2017, 20:52 2
Dima59, я бы начал с удаления conio.h и подключения stdlib
0
15.11.2017, 20:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2017, 20:52
Помогаю со студенческими работами здесь

Линейный двусвязный список
Задали задачу, реализовать линейный двусвязный список, и функцию к нему - удаление узла. Читал...

Двусвязный линейный список
Здравствуйте. Помогите пожалуйста в написании программы: Реализовать класс на основе двусвязного...

Двусвязный линейный список?
Всем доброго дня! Помогите пожалуйста. Есть задача: Дан двусвязный линейный список с целыми...

Двусвязный линейный список в С++
Как представить длинное число(например 145689) в виде двусвязного линейного списка. Чет не могу...

Двусвязный линейный список
Помогите пожалуйста написать эти программы :( Двусвязный линейный список, Быстрая сортировка ...

Линейный двусвязный список
Здравствуйте, имеется линейный двусвязный список. Структура элемента списка выглядит так: struct...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru