c语言单链表头插法实现链表逆置

c语言单链表头插法实现链表逆置


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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信