C语言实现链表数据结构:代码示例与应用
#include <stdio.h> #include <stdlib.h>
// 节点结构体 typedef struct Node { int data; // 存放数据 struct Node* next; // 指向下一个节点的指针 } Node;
// 链表结构体 typedef struct LinkedList { Node* head; // 头节点指针 int length; // 链表长度 } LinkedList;
// 初始化链表 LinkedList* initLinkedList() { LinkedList* list = (LinkedList*)malloc(sizeof(LinkedList)); list->head = NULL; list->length = 0; return list; }
// 插入节点 void insertNode(LinkedList* list, int data) { Node* node = (Node*)malloc(sizeof(Node)); node->data = data; node->next = NULL; if (list->head == NULL) { list->head = node; } else { Node* p = list->head; while (p->next != NULL) { p = p->next; } p->next = node; } list->length++; }
// 删除节点 void deleteNode(LinkedList* list, int data) { if (list->head == NULL) { return; } Node* p = list->head; if (p->data == data) { list->head = p->next; free(p); list->length--; return; } Node* q = p->next; while (q != NULL && q->data != data) { p = q; q = q->next; } if (q != NULL) { p->next = q->next; free(q); list->length--; } }
// 查找节点 Node* searchNode(LinkedList* list, int data) { Node* p = list->head; while (p != NULL && p->data != data) { p = p->next; } return p; }
// 输出链表 void printLinkedList(LinkedList* list) { Node* p = list->head; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n"); }
// 测试代码 int main() { LinkedList* list = initLinkedList(); insertNode(list, 1); insertNode(list, 2); insertNode(list, 3); printLinkedList(list); // 输出 1 2 3 deleteNode(list, 2); printLinkedList(list); // 输出 1 3 Node* node = searchNode(list, 3); printf("%d\n", node->data); // 输出 3 return 0; }
原文地址: https://www.cveoy.top/t/topic/n7Kl 著作权归作者所有。请勿转载和采集!