1. Allocate memory for the new element
- can be done in the add routine
2. Fill the structure data/prev/next fields for the new element
3. Connect in the linklist as follows:
Check listHead == 0 --> 1st elm --> both head and tail equal to the new elm
!= 0 --> not 1st elm --> put in after tail. then this new elm become tail.
#include <stdio.h>
#include <stdlib.h> // for malloc
// minimum needed as follows:
typedef struct node {
int data;
struct node *next;
struct node *prev;
} NodeType;
NodeType *listHead=0, *listTail=0; // this is convenient
int listAdd(int newData) {
NodeType *newNode;
newNode = (NodeType *) malloc(sizeof(NodeType));
// TBD check NULL and return if so
newNode->data = newData;
newNode->next = 0;
newNode->prev = 0;
if(listHead == 0) {
listHead = newNode;
listTail = newNode;
printf("1st node added (%d)\n", listHead->data);
return 0;
}
listTail->next = newNode;
newNode->prev = listTail;
// do not forget to set new listTail
listTail = listTail->next;
return 0;
}
No comments:
Post a Comment