链表逆序
程序员文章站
2024-03-05 23:31:49
...
#include<iostream>
struct ListNode{
int val;
ListNode *next;
ListNode(int x):val(x),next(NULL){}
//结构体定义了成员变量列表初始化的时候要用初始化列表初始化
//初始化列表有空括号,没有分号
};
//结构体/类/共用体的成员运算符i
//一个链表的节点的next指针表征的是下个节点的地址;
class Solution{
//类包括成员变量和成员函数
//
public:
//函数类型由返回值决定,并且只能返回一个
ListNode* reverseList(ListNode *head)
{
ListNode* prev=NULL;
std::cout<<prev<<std::endl;
//整体链表的遍历处理用while(head)方式
while(head)
{
//标记head下一个结点的地址
ListNode* N= head->next;
//将head的下一个节点指向标记节点
head->next=prev;
std::cout<<"prev: "<<prev<<std::endl;
//为该标记节点赋值为head的地址
prev=head;
std::cout<<"head: "<<head<<std::endl;
//处理下一个结点
head=N;
}
return prev;
}
};
int main()
{
ListNode a(0);
ListNode b(1);
ListNode c(2);
ListNode d(3);
ListNode e(4);
a.next=&b;
b.next=&c;
c.next=&d;
d.next=&e;
e.next=NULL;
//指针指向了结构体
//指针运算符和指向对象的指针一起使用
Solution solve;
//类要定义对象,才可以利用成员运算符使用成员函数
//形参是指针的时候,实参是地址
ListNode* head= solve.reverseList(&a);
while(head)
{
std::cout<<head->val<<std::endl;
head=head->next;
}
return 0;
}
上一篇: ThinkPHP 整合Bootstrap Ajax分页样式
下一篇: 单链表的基本操作