关闭

C link table question

标签: link
335人阅读 评论(0) 收藏 举报
分类:

How to serach the middle element of the link table

#include <iostream>   
using namespace std;  
struct node{  
  node *next;  
  int data;   
};  
//用一个类封装链表的操作    
class linknode{  
    public:  
    linknode(){  
    head = new node;  
    head->next = NULL;  
    }  
    ~linknode(){  
      delete head;    
    }  
    //销毁所有资源    
    void Clear(){  
      node *p,*q;  
      p = head;  
      while(p){  
        q = p->next;  
      delete p;  
      p = q;      
      }  
      //注意这里    
      head->next = NULL;  
      cout << "OK,destroyed all elements" << endl;  
    }  
    //尾插法    
    void Create(int n){  
        node *p,*q;  
        int data;  
        p = head;  
       while(n--){  
          q = new node;  
          cout << "input data:";  
          cin >> data;  
          q->data = data;  
          q->next = NULL;  
          p->next = q;  
          p = q;  
       }  
        
    }  
    void Output(){  
       node *p;  
       //注意,不要写成p = head;因为头结点没有保存数据    
       p = head->next;  
       while(p){  
        cout << p->data << " ";  
         p = p->next;  
       }  
       cout << endl;  
    }  
    //查找中间的元素    
    node* findMid(){  
        node *p1,*p2;  
        p1 = head;  
        p2 = head;  
        while(p1 != NULL && p2 != NULL){  
          p1 = p1->next->next;  
          p2 = p2->next;   
        }  
        return p2;  
    }  
    private:  
       node *head;  
};  
int main(){  
  linknode lk;  
  node *tmp;  
  lk.Create(5);   
  lk.Output();  
  tmp = lk.findMid();  
  cout << tmp->data << endl;  
  lk.Clear();  
}  


 

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:347次
    • 积分:5
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行