美文网首页
如何遍历一遍得到单向链表中间位置的元素

如何遍历一遍得到单向链表中间位置的元素

作者: 小幸运Q | 来源:发表于2019-01-04 00:25 被阅读4次

    • 方法:

    设置两个指针,p1,p2, 开始p1,p2均位于链接的头部。
    p1 每次步进两步,
    p2 每次步进一步
    当p1到达链表的末尾时,p2所在的位置就是链表的中间元素

    #include<iostream>
    using namespace std;
    #define N 1000
    typedef struct Node{
      int num;
      Node* next;
      Node(){
        num=0;
        next=NULL;
      }
    }Node;
    void findmiddle(Node*root){
      Node* p=root;
      Node* q=root;
      // p在前面,q在后面
      while((p->next)!=NULL&&((p->next)->next)!=NULL){
        p=((p->next)->next);
        q=q->next;
      }
      cout<<"middle:"<<q->num<<endl;
    }
    void add(Node*&root,int num){
      if(root==NULL){
        root=new Node();
        root->num=num;
        return;
      }
      add(root->next,num);
    }
    void print(Node*p){
      while(p!=NULL){
        cout<<p->num<<endl;
        p=p->next;
      }
    }
    int main(){
      Node*p=NULL;
      add(p,1);
      add(p,2);
      add(p,3);
      add(p,4);
      findmiddle(p);
    }
    

    相关文章

      网友评论

          本文标题:如何遍历一遍得到单向链表中间位置的元素

          本文链接:https://www.haomeiwen.com/subject/fhmcrqtx.html