|
C语言,指针链表详解解说及代码示例
指针链表是一种常用的数据结构,用于存储和组织数据。它由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针。通过这种方式,可以动态地添加、删除和访问节点,实现灵活的数据操作。
下面是一个简单的指针链表的代码示例,以便更好地理解:
- #include <stdio.h>
- #include <stdlib.h>
- // 定义链表节点结构体
- struct Node {
- int data; // 节点数据
- struct Node* next; // 指向下一个节点的指针
- };
- // 创建链表节点
- struct Node* createNode(int data) {
- struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
- if (newNode == NULL) {
- printf("内存分配失败!\n");
- exit(1);
- }
- newNode->data = data;
- newNode->next = NULL;
- return newNode;
- }
- // 在链表末尾插入节点
- void insertAtEnd(struct Node** head, int data) {
- struct Node* newNode = createNode(data);
- if (*head == NULL) {
- *head = newNode;
- } else {
- struct Node* temp = *head;
- while (temp->next != NULL) {
- temp = temp->next;
- }
- temp->next = newNode;
- }
- }
- // 打印链表
- void printList(struct Node* head) {
- struct Node* temp = head;
- while (temp != NULL) {
- printf("%d ", temp->data);
- temp = temp->next;
- }
- printf("\n");
- }
- // 主函数
- int main() {
- struct Node* head = NULL;
- // 在链表末尾插入节点
- insertAtEnd(&head, 10);
- insertAtEnd(&head, 20);
- insertAtEnd(&head, 30);
- // 打印链表
- printf("链表内容: ");
- printList(head);
- return 0;
- }
复制代码 在以上示例中,我们首先定义了一个链表节点的结构体,包含数据和指向下一个节点的指针。然后,我们实现了创建节点的函数 createNode ,用于动态分配内存并初始化节点的数据和指针。接下来,我们定义了插入节点的函数 insertAtEnd ,它将新节点插入到链表的末尾。最后,我们实现了打印链表的函数 printList ,用于遍历链表并打印节点的数据。
在主函数中,我们创建一个指向链表头节点的指针 head ,然后通过调用 insertAtEnd 函数插入三个节点。最后,我们调用 printList 函数打印链表的内容。
这只是一个简单的指针链表示例,你可以根据需要扩展和修改代码来实现更复杂的链表操作,如插入节点到指定位置、删除节点等。指针链表是C语言中常用的数据结构,对于存储和操作动态数据非常有用。
|
|