У меня есть дважды связанный список, и я хочу изменить направление списка. Например:
1 -> 2 -> 3
становится
3 -> 2 -> 1
Я использовал логическое выражение в моем структура для определения направления.
typedef struct Node Node;
struct Node {
char character;
Node *link[2];
bool dir;
} direction;
Я определяю направление с помощью этого формата:
Node *p;
p->link[p->dir];
или
Node *p;
p->link[!p->dir];
Проблема, с которой я столкнулся, заключается в том, что я хочу перевернуть эти логические значения направления с методом, который использует время выполнения O (1). Я попытался создать функцию, которая обрабатывает ее следующим образом:
//global variable
int d = 0;
//function
void switchStack ( ) {
if (d == 0) {
d = 1;
direction->link[direction->dir] = direction->link[!direction->dir];
else if (d == 1) {
d = 0;
direction->link[direction->dir] = direction->link[!direction->dir];
}
Эта функция, похоже, ничего не делает, и любые другие варианты, которые я пробую, вызывают сбой программы при ее вызове. Кто-нибудь имеет представление о том, как правильно использовать переключатель направления для реверса стека со временем выполнения 0 (1)?