当前位置:网站首页 > Go语言开发 > 正文

单向链表反转(单向链表反转c语言)



大家好,我是贤弟!

一、什么是单链表反转?

单链表反转是指将单链表中的节点顺序颠倒过来,即原来的尾节点变为头节点,原来的头节点变为尾节点。

二、以下是用C语言实现单链表反转的代码:

c#include #include

/* 定义单链表节点结构体 */typedef struct node { int data; struct node *next;} Node;

/* 创建单链表 */Node* createList(int n) { Node *head = NULL, *p = NULL, *q = NULL; int i, x; for (i = 1; i <= n; i++) { printf("请输入第%d个节点的值:", i); scanf("%d", &x); p = (Node*)malloc(sizeof(Node)); p->data = x; p->next = NULL; if (head == NULL) { head = p; } else { q->next = p; } q = p; } return head;}

/* 反转单链表 */Node* reverseList(Node *head) { Node *p = NULL, *q = NULL, *r = NULL; p = head; while (p != NULL) { r = p->next; p->next = q; q = p; p = r; } head = q; return head;}

/* 输出单链表 */void printList(Node *head) { Node *p = head; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf(" ");}

int main() { int n; printf("请输入单链表的长度:"); scanf("%d", &n); Node *head = createList(n); printf("原始单链表:"); printList(head); head = reverseList(head); printf("反转后的单链表:"); printList(head); return 0;}

注意:

程序中,首先定义了单链表节点结构体,包含数据域和指向下一个节点的指针。

然后通过`createList`函数创建单链表,其中循环读入每个节点的值,并将其插入链表中。

`reverseList`函数实现单链表反转,通过三个指针分别指向当前节点、上一个节点和下一个节点,依次将当前节点的指针指向上一个节点,然后将三个指针向后移动一个节点。最后,通过`printList`函数输出单链表的值。

在`main`函数中,读入单链表长度,创建单链表,输出原始单链表,反转单链表后再次输出。

到此这篇单向链表反转(单向链表反转c语言)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 注册苹果开发者账号出现未知错误(注册苹果开发者账号出现未知错误怎么回事)2026-05-14 22:18:07
  • vs怎么创建c语言项目2019(vs2019创建c语言项目步骤)2026-05-14 22:18:07
  • 苹果开发者账号企业和个人的区别(苹果企业开发者账号特点及价格是多少?)2026-05-14 22:18:07
  • goa电路(goa电路原理图)2026-05-14 22:18:07
  • 好玩的代码复制c语言(c语言代码大全可复制)2026-05-14 22:18:07
  • Linux驱动开发进阶(linux驱动开发实战)2026-05-14 22:18:07
  • 微信小程序制作官网(微信小程序开发平台官网)2026-05-14 22:18:07
  • linux内核驱动开发书籍(linux内核驱动开发书籍有哪些)2026-05-14 22:18:07
  • 制作网页的代码web(制作网页的代码叫什么语言)2026-05-14 22:18:07
  • 预训练语言模型英文(预训练语言模型英文缩写)2026-05-14 22:18:07
  • 全屏图片