阅读量:8
在C语言中使用链表,需要定义一个结构体来表示链表的节点,每个节点包含一个数据域和一个指针域。然后通过操作指针来实现链表的各种操作。
以下是一个示例代码,展示了如何创建一个链表、插入节点、删除节点以及遍历链表等操作:
#include <stdio.h> #include <stdlib.h> // 定义链表节点 typedef struct Node { int data; // 数据域 struct Node* next; // 指针域 } Node; // 创建新节点 Node* createNode(int data) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; return newNode; } // 插入节点到链表尾部 void insertNode(Node** head, int data) { Node* newNode = createNode(data); if (*head == NULL) { *head = newNode; } else { Node* curr = *head; while (curr->next != NULL) { curr = curr->next; } curr->next = newNode; } } // 删除节点 void deleteNode(Node** head, int data) { Node* curr = *head; Node* prev = NULL; while (curr != NULL && curr->data != data) { prev = curr; curr = curr->next; } if (curr == NULL) { printf("节点 %d 不存在\n", data); return; } if (prev == NULL) { *head = curr->next; } else { prev->next = curr->next; } free(curr); printf("节点 %d 已删除\n", data); } // 遍历链表 void printList(Node* head) { if (head == NULL) { printf("链表为空\n"); return; } Node* curr = head; while (curr != NULL) { printf("%d ", curr->data); curr = curr->next; } printf("\n"); } int main() { Node* head = NULL; // 插入节点到链表 insertNode(&head, 1); insertNode(&head, 2); insertNode(&head, 3); // 遍历链表 printList(head); // 输出:1 2 3 // 删除节点 deleteNode(&head, 2); printList(head); // 输出:1 3 return 0; }
上述代码定义了一个链表节点的结构体Node
,并实现了创建节点、插入节点、删除节点以及遍历链表等操作。在main
函数中,创建了一个链表并进行了相应的操作,最终输出了链表的内容。