找链表中间元素

简介: #include <iostream>#include <string>using namespace std; typedef struct LNode{ int date; //节点的数据域 struct LNode *next; //节点的指针域 }LNode,*LinkList; // LinkList 为指向结构体LNode的指针类型 LinkList findmiddle(LinkList L){ LinkList p ,q; p = L; //p为快指针,初始时指向L q = L; //q为慢指针,初试时
#include <iostream>
#include <string>
using namespace std;
typedef struct LNode
{ 
  int date;     //节点的数据域 
  struct LNode *next;   //节点的指针域  
}LNode,*LinkList;        // LinkList 为指向结构体LNode的指针类型
LinkList findmiddle(LinkList L)
{
  LinkList p ,q;
  p = L;     //p为快指针,初始时指向L
  q = L;     //q为慢指针,初试时指向L
  while(p!=NULL&&p->next != NULL)  //确保p可以走俩步
  {
    p = p->next->next;           //快指针一次走俩步 
    q = q->next;                //慢指针一次走一步 
  }
  return q; 
} 
void CreateList_R(LinkList &L)   //尾插法创建单链表 (尾插法是正序建表) 
{
    //输入n个元素,建立到头结点的单链表
    int n ;
    LinkList  s, r;
    L = new LNode;
  L->next = NULL;  //先建立一个带头结点的空链表 
  r = L;           //尾指针r指向头结点  (就他自己)
    cout<<"请输入元素个数 n: "<<endl;
  cin>>n;
  cout<<"请依次输入n个元素:"<<endl;
  cout<<"前插法创建单链表..."<<endl;
  while(n--)
  { 
    s = new LNode ;       //生成新结点s
    cin>>s->date;          //输入元素赋值给新结点的数据域
      s->next = NULL;
      r->next = s;           //将新结点插s插入尾结点*r之后
    r = s;                 //r指向新的尾结点s 
    }
}
void listprint_L(LinkList L)  //单链表的输出 
{
  LinkList p;
  p = L->next;
  while(p)
  {
    cout<<p->date<<"\t";
    p = p->next;
  } 
  cout<<endl;
}
int main()
{
  LinkList L,mid;
  CreateList_R(L);
  mid = findmiddle(L);
  cout<<mid->date<<endl;
}
相关文章
|
2月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
36 1
|
4月前
|
程序员
【刷题记录】移除链表元素
【刷题记录】移除链表元素
01_移除链表元素
01_移除链表元素
|
6月前
|
算法
数据结构和算法学习记录——习题-移除链表元素
数据结构和算法学习记录——习题-移除链表元素
25 0
|
2月前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
30 0
|
4月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
4月前
|
存储 C语言
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
|
5月前
【数据结构OJ题】移除链表元素
力扣题目——移除链表元素
45 2
【数据结构OJ题】移除链表元素
|
4月前
|
Python
【Leetcode刷题Python】203.移除链表元素
文章提供了三种删除链表中特定值节点的方法:迭代法、虚拟节点迭代删除法和递归法,并给出了相应的Python实现代码。
26 0
|
5月前
链表4(法二)------7-4 sdut-C语言实验-单链表中重复元素的删除
链表4(法二)------7-4 sdut-C语言实验-单链表中重复元素的删除
33 0