2024年4月30日发(作者:)
c语言单链表头插法实现链表逆置
链表是一种常用的数据结构,它由一系列节点组成,每个节点包含
数据和指向下一个节点的指针。在C语言中,我们可以使用单链表来
实现各种操作,如插入、删除和查找等。本文将介绍如何使用头插法
实现链表的逆置。
首先,我们需要定义一个链表节点的结构体,包含数据和指向下一
个节点的指针。代码如下:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
接下来,我们需要实现链表的创建和逆置函数。首先,创建一个空
链表,并将头节点指针指向NULL。代码如下:
```c
Node* createList() {
Node* head = NULL;
return head;
}
```
然后,我们可以实现链表的插入函数,使用头插法将新节点插入到
链表的头部。代码如下:
```c
Node* insertNode(Node* head, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = head;
head = newNode;
return head;
}
```
接下来,我们可以实现链表的逆置函数,通过遍历链表,将每个节
点插入到头部,从而实现链表的逆置。代码如下:
```c
Node* reverseList(Node* head) {
Node* newHead = NULL;
Node* temp = NULL;
while (head != NULL) {
temp = head->next;
head->next = newHead;
newHead = head;
head = temp;
}
return newHead;
}
```
最后,我们可以编写主函数,测试链表的逆置功能。代码如下:
```c
int main() {
Node* head = createList();
head = insertNode(head, 1);
head = insertNode(head, 2);
head = insertNode(head, 3);
head = insertNode(head, 4);
head = insertNode(head, 5);
printf("原链表:");
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("n");
head = reverseList(head);
printf("逆置后的链表:");
temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("n");
return 0;
}
```
运行以上代码,输出结果如下:
```
原链表:5 4 3 2 1
逆置后的链表:1 2 3 4 5
```
通过以上代码,我们成功地使用C语言的单链表头插法实现了链表
的逆置。头插法是一种简单而高效的方法,可以在O(n)的时间复杂度
内完成链表的逆置操作。希望本文对你理解链表的逆置有所帮助。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1714415024a2441973.html
评论列表(0条)