Что не так с определением середины? - C (СИ)
Формулировка задачи:
Я пытаюсь разбить список на два, ну вы все можете увидеть сами:
Вот только выводит у меня в случае нечетного кол-ва элементов первый список на 1 короче второго, а надо бы наоборот.
Что не так здесь записано? Даже на бумажке проверил, что я упустил?
Вывод списков у меня такого вида:
Структура:
Переменные:
head1 = head;
p = head1;
i=1;
while (i<(n/2)) //4/2 == 2; 3/2 == 1,5 = 2;
{
p = p->next;
i++;
}
head2 = p->next;
p->next = NULL;p = head1;
while (p!=NULL) //такое произойдет, когда уже выведется последний элемент, и указатель упрется в грань
{
printf("->%.2f \n",p->content);
p = p->next;
}
printf("\n");typedef struct list
{
float content;
struct list *next;
} list;int n; int i; short size_list = sizeof(list); list *head; list *head1; list *head2;
Решение задачи: «Что не так с определением середины?»
textual
Листинг программы
int n=3/2;
Объяснение кода листинга программы
- В первой строке кода объявлена переменная
nи ей присваивается значение 3/2. - Значение переменной
nравно 1.5.