Ειδικές μορφές λιστών

Διακρίνουμε τις παρακάτω ειδικές μορφές συνδεδεμένων λιστών:
διπλά συνδεδεμένη λίστα (doubly linked list)
Κάθε στοιχείο της λίστας έχει δείκτες στο προηγούμενο και το επόμενο. Αυτή μπορεί να οριστεί με την παρακάτω δομή της C:
struct s_int_dlist {
	int	val;			/* Integer value */
	struct s_int_dlist *prev;	/* Previous element */
	struct s_int_dlist *next;	/* Next element */
};
Η εισαγωγή ενός στοιχείου np πριν από το στοιχείο της λίστας p γίνεται με τις παρακάτω εντολές:
	p->prev->next = np;
	np->next = p;
	np->prev = p->prev;
	p->prev = np;
κυκλικά συνδεδεμένη λίστα
Το τελευταίο στοιχείο της λίστας δείχνει ξανά το πρώτο. Η δομή αυτή ονομάζεται και δακτύλιος (ring). Η διάσχιση της δομής αυτής πρέπει να γίνει με προσοχή για να μην καταλήξει σε ατέρμoνο βρόχο:
	struct s_dlist *start, *p;

	p = start;
	if (p)
		do {
			/* Process list element */
			...
			p = p->next;
		} while (p != start);
κυκλικά διπλά συνδεδεμένη λίστα
Σύνθεση των παραπάνω.