您的位置:首页 > 职场人生

链表面试题(二)---链表逆序(链表反转)

2017-05-16 23:15 288 查看
一、结构体定义

typedef int DataType;

typedef struct ListNode//定义结点
{
DataType data;
struct ListNode* next;
}ListNode,*PListNode;

typedef struct  PList//定义一个成员是指向结点的指针的结构体
{
PListNode PHead;
}List,*PList;


二、代码:

//2.链表逆序(翻转)
void ReverseList(PList PList)
{
PListNode cur=NULL;
PListNode NewNode=NULL;
PListNode tmp=NULL;
cur=PList->PHead;
assert(PList);
if (PList->PHead==NULL||PList->PHead->next==NULL)//空链表或着只有一个结点的链表
{
return  PList->PHead;
}
else//大于两个结点
{
while (cur)
{
tmp=cur;
cur=cur->next;//先将当前指针更新到下一个结点
tmp->next=NewNode;
NewNode=tmp;
}
PList->PHead=NewNode;//更新链表的头
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题 链表