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

来源:互联网 发布:js 回调函数 全局变量 编辑:程序博客网 时间:2024/06/05 09:39

一、结构体定义

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;//更新链表的头    }}
原创粉丝点击