赞
踩
1.问题
给你单链表的头节点 head,请你反转链表,并返回反转后的链表。
2.代码实现:
- //3.反转链表
- #define _CRT_SECURE_NO_WARNINGS 1
- #include <stdio.h>
- #include <stdlib.h>
- #include <assert.h>
-
-
-
- typedef int SLTDataType;
-
- typedef struct SListnode
- {
- SLTDataType val;
- struct SListnode* next;
- }ListNode;
-
- ListNode* createNode(SLTDataType val)
- {
- ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));
- if (newnode == NULL)
- {
- perror("malloc");
- exit(1);
- }
- newnode->val = val;
- newnode->next = NULL;
- return newnode;
- }
-
-
-
- struct ListNode* reverseList(struct ListNode* head)
- {
- if (head == NULL)
- {
- return head;
- }
- ListNode* n1,*n2,*n3 ;
- n1= NULL, n2=head, n3=n2->next;//创建三个节点
- while (n2)
- {
- n2->next = n1;// 指针逆向
- n1 = n2;
- n2 = n3;
- if (n3)
- {
- n3 = n3->next;
- }
- }
- return n1;
- }
-
- int main()
- {
- ListNode* node1, * node2, * node3, * node4, * node5;
-
- node1 = createNode(1);
- node2 = node1->next = createNode(2);
- node3 = node2->next = createNode(3);
- node4 = node3->next = createNode(4);
- node5 = node4->next = createNode(5);//创建一个链表
-
- ListNode* newhead = reverseList(node1);//反转链表
-
- while (newhead)
- {
- printf("%d ", newhead->val);
- newhead = newhead->next;
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。