Пост для минусов в комментариях.
Не знаю , где еще можно попросить оперативной помощи по программированию,поэтому прошу здесь.
Писал программу для курсовой работы.
Послезавтра сдавать, а тут вылезло нечто .
Вкратце.
Создается меню ->10 позиций.
"0 - Выходn"
"1 - Задать случайный списокn"
"2 - Вывести список на экранn"
"3 - Вывести список на экран так, как он записан в памяти компьютераn"
"4 - Записать элемент в начало спискаn"
"5 - Записать элемент в конец спискаn"
"6 - Записать элемент в указанное место спискаn"
"7 - Найти индекс элемента в заданном спискеn"
"8 - Удалить элемент в списке по заданному индексуn"
"9 - Поменять первую и вторую половину списка местамиn");
И проблема в следующем когда создаю список и меняю первую и вторую половину списка, он их не меняет. Ниже приведу код 2ух файлов.
Первый main.cpp и второй head.h
main.cpp
#include "Head.h"
int main()
{
setlocale(LC_ALL, "rus");
srand(time(0));
List l;
int k = 1, n, m;
while (k)
{
printf("nМЕНЮ:n"
"0 - Выходn"
"1 - Задать случайный списокn"
"2 - Вывести список на экранn"
"3 - Вывести список на экран так, как он записан в памяти компьютераn"
"4 - Записать элемент в начало спискаn"
"5 - Записать элемент в конец спискаn"
"6 - Записать элемент в указанное место спискаn"
"7 - Найти индекс элемента в заданном спискеn"
"8 - Удалить элемент в списке по заданному индексуn"
"9 - Поменять первую и вторую половину списка местамиn");
scanf_s("%d", &k);
switch (k)
{
case 0:
{
break;
}
case 1:
{
printf("Введите количество элементов (максимум:%d)", N - l.size);
scanf_s("%d", &n);
for (int i = 0; i N - 1)
{
printf("nВ списке нет места!n");
return;
}
int i = M[0].next;
M[0].next = M[i].next;
M[i].body = v;
M[i].next = first;
first = i;
size++;
if (size == 1) last = first;
return;
}
void Insert_Last(Item v)
{
int k = M[0].next;
M[0].next = M[k].next;
M[last].next = k;
M[k].body = v;
last = k;
size++;
M[k].next = 0;
if (!first)
{
first = k;
}
}
void Insert_After(int after, Item v)
{
int i = first;
do
{
if (i == after)
{
break;
}
i = M[i].next;
} while (i);
if (!i || !size)
{
printf("No index %d in List!n", after);
return;
}
int k = M[0].next;
M[0].next = M[k].next;
M[k].body = v;
M[k].next = M[after].next;
M[after].next = k;
size++;
if (last == after)
{
last = k;
}
}
int Find(Item v)
{
int i = first;
do
{
if (M[i].body == v)
{
break;
}
i = M[i].next;
} while (i);
if (!i || !size)
{
printf("Не существует индекса для %d в списке!", v);
return 0;
}
return i;
}
void deleting(int index)
{
if (!size)
{
printf("список пуст!");
return;
}
if (index == first)
{
first = M[index].next;
M[index].next = M[0].next;
M[0].next = index;
if (!M[first].next)
{
last = first;
}
size--;
return;
}
int after = first;
do
{
if (M[after].next == index)
{
break;
}
after = M[after].next;
} while (after);
if (!after || !size)
{
printf("Индекса %d нет в списке!n", index);
return;
}
M[after].next = M[index].next;
M[index].next = M[0].next;
M[0].next = index;
if (!M[after].next)
{
last = after;
}
size--;
return;
}
void a()
{
if (!size)
{
printf("список пуст!");
return;
}
int i=1,j=first;
while (i != size / 2)
{
j = M[j].next;
i++;
}
M[last].next = first;
int k = M[j].next;
first=k;
M[j].next = 0;
last = j;
}
};