C语言-单链表和双链表
单链表
typedef struct Node {
int data;
struct Node * next;
} ListNode;
ListNode* createNode ( int data) {
ListNode* newNode = ( ListNode* ) malloc ( sizeof ( ListNode) ) ;
if ( ! newNode) {
printf ( "内存分配失败!\n" ) ;
return NULL ;
}
newNode-> data = data;
newNode-> next = NULL ;
return newNode;
}
void insertNode ( ListNode* * head, int data) {
ListNode* newNode = createNode ( data) ;
if ( * head == NULL ) {
* head = newNode;
} else {
ListNode* temp = * head;
while ( temp-> next != NULL ) {
temp = temp-> next;
}
temp-> next = newNode;
}
}
### 双链表
```c
typedef struct Node {
int data;
struct Node * prev;
struct Node * next;
} DListNode;
DListNode* createDNode ( int data) {
DListNode* newNode = ( DListNode* ) malloc ( sizeof ( DListNode) ) ;
if ( ! newNode) {
printf ( "内存分配失败!\n" ) ;
return NULL ;
}
newNode-> data = data;
newNode-> prev = NULL ;
newNode-> next = NULL ;
return newNode;
}
void insertDNode ( DListNode* * head, int data) {
DListNode* newNode = createDNode ( data) ;
if ( * head == NULL ) {
* head = newNode;
} else {
DListNode* temp = * head;
while ( temp-> next != NULL ) {
temp = temp-> next;
}
temp-> next = newNode;
newNode-> prev = temp;
}
}