I have to develop a linked list similar to one I found asked about on this site:

xor linked list

Mine has a twist though.

The function signatures include pointers to pointers for the head and tail, along with the integer number.

Here is my source.

I am only working on the insert method at this time. I am kind of just code pushing for the declarations in that function, no really knowledge on what I should be doing. I am very confused with the **head and **tail variables.Code:#include <stdio.h> #include "rndm.h" #include <stdlib.h> #define init_seed #define set_range #define SIZERANGE 100 typedef struct node { int data; unsigned long link; }node ; node *head, *tail; void insert(node **head,node **tail, int n) { node *prev, *cur, *next, *tmp; node *newnode = malloc(sizeof(node)); head = &cur; prev = NULL; while(cur->data < n) { next = (node *)(cur->link ^ (unsigned long)prev); prev = cur; cur = next; } newnode->link ^= (unsigned long) prev ^(unsigned long) cur; prev->link ^= (unsigned long) cur ^ (unsigned long) newnode; cur->link ^= (unsigned long) prev ^ (unsigned long) newnode; }//end insert void delete(node **head, node **tail, int n) { } void list(node *head) { } main () { head=NULL; tail=head; int startRange, endRange, n,i; long inputSeed; printf("Seed: "); scanf("%l\n", &inputSeed); init_seed(inputSeed); printf("Range: "); scanf("%d %d\n", &startRange, &endRange); set_range(startRange, endRange); for(i=0; i <= SIZERANGE; i++) { insert(&head, &tail, rndm()); } }

Can someone kind of give me a push in the right direction concerning how this function should be operating and the variable declarations?

Thanks!