LinkedList 单向链表

实现:拷贝构造函数,赋值构造函数(和拷贝类似不过我写错了)析构函数,头插入

#include<iostream>
using namespace std;
 template <typename E>

class LinkedList
{
private:
 
  // inner class: linked-list node
  class Node
  {
  public:
    E data;
    Node * next;
  };
 
  Node * first;
 
public:
  LinkedList() {
    first = 0;
  }
 
  ~LinkedList() {
    while (first != 0) {
      removeFirst();
    }
  }
 
  E getFirst() const{
    return first->data;
  }
 
  bool isEmpty() const{
    return first == 0;
  }
 
//You should just submit the function, not the class or the main function.
  LinkedList(const LinkedList & that);
  LinkedList & operator= (const LinkedList & that);
  void removeFirst() ;
  void addFirst(E data);
};

 template <typename E>
LinkedList<E>::LinkedList(const LinkedList & that){
    if(that.first == NULL){
            first = NULL;
            return;
        }
    
    Node * flag = that.first;
    first = new Node();
    first->data = flag->data;
    flag = flag->next;
    Node * p = first;
    while(flag!=NULL){
        p->next = new Node();
        p = p->next;
        p->data = flag->data;
        flag = flag->next;
    }
    p->next = NULL;
  }

   template <typename E>
  LinkedList<E> & LinkedList<E>::operator= (const LinkedList & that){
    if(that.first == NULL){
            first = NULL;
            return;
        }
    
    Node * flag = that.first;
    first = new Node();
    first->data = flag->data;
    flag = flag->next;
    Node * p = first;
    while(flag!=NULL){
        p->next = new Node();
        p = p->next;
        p->data = flag->data;
        flag = flag->next;
    }
    p->next = NULL;
  }
   template <typename E>
  void LinkedList<E>::removeFirst(){
    Node * f = first;
    first = first->next;
    delete f;
  }
   template <typename E>
  void LinkedList<E>::addFirst(E data){
    if(first == NULL){
        first = new Node();
        first->data = data;
        first->next = NULL;
        return;
    }

    //not empty
    Node * p = new Node();
    p->data = data;
    p->next = first;
    first = p;
  }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值