Вставить/удалить элемент в двусвязную очередь
#include <search.h>void insque( void *elem, void *pred );void remque( void *elem );
NULL
если необходимо инициализировать первый элемент списка.libc
Функции insque() и remque() управляют очередями, построенными на двусвязных списках. Очередь может быть либо кольцевой либо линейной. Функции ожидают, что их аргументы будут указывать на структуру, первый и второй элементы которой являются указателями на следующий и предыдущий элемент, соответственно. Функция insque() позволяет передать NULL
в качестве параметр pred для инициализации первого (головного) элемента линейного списка.
Примеры используют следующую структуру:
struct queue {struct queue *next;struct queue *prev;char *data;};
Создание линейного списка:
#include <search.h>...struct queue element1;struct queue element2;char *data1 = "DATA1";char *data2 = "DATA2";...element1.data = data1;element2.data = data2;insque( &element1, NULL );insque( &element2, &element1 );
Создание кольцевого списка:
#include <search.h>...struct queue element1;struct queue element2;char *data1 = "DATA1";char *data2 = "DATA2";...element1.data = data1;element2.data = data2;element1.next = &element1;element1.prev = &element1;insque( &element2, &element1 );
Удаление элемента списка:
#include <search.h>...struct queue element1;...remque( &element1 );
POSIX 1003.1 X/Open Systems Interfaces Extension
Предыдущий раздел: Описание API системной библиотеки