c语言简单链表
黄文隆 2023-09-24编程经验
简单链表是一种线性数据结构,它由一系列节点组成,每个节点包含两部分:数据和指向下一个节点的指针。C语言是一种广泛使用的编程语言,适合用于实现简单链表。首先,需要定义一个节点结构体,用于
简单链表是一种线性数据结构,它由一系列节点组成,每个节点包含两部分:数据和指向下一个节点的指针。C语言是一种广泛使用的编程语言,适合用于实现简单链表。
首先,需要定义一个节点结构体,用于存储数据和指向下一个节点的指针:
typedef struct Node{ int data; struct Node* next; }Node;
结构体中的data字段用于存储节点的数据,next字段用于指向下一个节点的地址。定义了节点结构体后,可以开始实现链表的增、删、改、查等操作。
1. 链表的初始化:
Node* head = NULL;
链表的头指针初始化为NULL,表示链表为空。
2. 添加节点:
void addNode(Node** headRef, int newData){ Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = newData; newNode->next = *headRef; *headRef = newNode; }
addNode函数用于在链表的头部添加新节点。首先动态分配内存以存储新节点,然后将新节点的数据设置为传入的newData,将新节点的next指针指向原来的头节点,最后将头指针指向新节点。
3. 删除节点:
void deleteNode(Node** headRef, int key){ Node* temp = *headRef; Node* prev = NULL; if (temp != NULL && temp->data == key){ *headRef = temp->next; free(temp); return; } while (temp != NULL && temp->data != key){ prev = temp; temp = temp->next; } if (temp == NULL) return; prev->next = temp->next; free(temp); }
deleteNode函数用于删除链表中指定数据的节点。首先判断头节点是否是要删除的节点,若是,则将头节点指向下一个节点并释放内存。若不是,则从头节点开始遍历链表,直到找到要删除的节点或链表末尾。若找到要删除的节点,则将前一个节点的next指针指向待删除节点的下一个节点,并释放内存。
4. 遍历链表:
void printList(Node* head){ while (head){ printf("%d ", head->data); head = head->next; } printf("\n"); }
printList函数用于遍历链表并输出每个节点的数据。从头节点开始,依次输出节点的数据,并将当前节点指向下一个节点,直到链表末尾。
简单链表是一种常用的数据结构,可以应用于很多实际问题。通过定义节点结构体和实现相关操作函数,我们可以方便地操作链表中的节点。
很赞哦! ()