#include <stdio.h>
#include <iostream>
/*---------------------链表的操作----------------------*/
//也可以直接使用STL中的双向链表结构list。
typedef struct ListNode
{
int val;
ListNode* pNext;
} ListNode,*PListNode;
//快速寻找链表的中间节点
//【注】:对于寻找链表倒数第n个节点也是同样的流程
ListNode* FindMidNodeInList(PListNode ListHead)
{
if(ListHead==NULL)
return NULL;
if(ListHead->pNext==NULL)
return ListHead;
PListNode pFast=ListHead;
PListNode pSlow=ListHead;
while(pFast->pNext)
{
pSlow=pSlow->pNext;
pFast=pFast->pNext->pNext;
};
return pSlow;
}
int main()
{
//构造链表数据
printf("请输入链表长度:\n");
int len;
scanf("%d",&len);
PListNode ListHead=new ListNode;
PListNode CurNode=ListHead;
int i=1;
while(i<=len)
{
printf("请输入第%d个链表元素\n",i);
int val;
scanf("%d",&val);
CurNode->val=val;
if(i==len)
CurNode->pNext=NULL;
else
{
CurNode->pNext=new ListNode;
CurNode=CurNode->pNext;
}
++i;
}
CurNode->pNext=NULL;
PListNode pMid=FindMidNodeInList(ListHead);
return 0;
}
链表的中点 快慢指针
猜你喜欢
转载自blog.csdn.net/ailinyingai/article/details/103742287
今日推荐
周排行