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;
}
}