能有大佬帮我看一下这段代码问题在哪吗

总是会出现/clang:-1: linker command failed with exit code 1 (use -v to see invocation)

#include <iostream>
using namespace std;
template <class T>
struct DblNode{//链表结点类定义
    T data;//链表结点数据
    DblNode<T> *lLink,*rLink;//链表前驱后继指针
    DblNode(DblNode<T> *left=NULL,DblNode<T> *right=NULL){
        lLink=left;
        rLink=right;
    }//构造函数赋予初值,适用于后面调用时候实参两个
    DblNode(T value,DblNode<T> *left=NULL,DblNode<T> *right=NULL){
        data=value;
        lLink=left;
        rLink=right;
    }//构造函数赋予初值,适用于后面调用时候实参两个
};
/*
template <class T>
class LinearList {
public:
    LinearList();//定义构造函数(在这里可有可无)
    ~LinearList();//定义析构函数(清理垃圾)
    //virtual提供子类继承并将其实现。
    virtual DblNode<T>Search(const T&x)const=0;//const表明它不能改变操作它的对象的数据成员,且自身不能调用非const成员
    virtual DblNode<T>Locate(int i,int d)const=0;//在表中定位第i个元素的位置
    virtual bool Insert(int i,const T&x,int d)=0;//在第i个表项后插入x
    virtual bool Remove(int i,T&x,int d)=0;//删除第i个表项,通过x返回

};
 */
//
template <class T>
class DblList{//继承的关系
public:
    DblList();//构造函数,建立附加头结点
    DblList(T data);
    ~DblList();//析构函数,清理垃圾
    void setHead(DblNode<T> *ptr){first=ptr;}
    DblNode<T>*Search(const T&x);//在链表中按后继方向寻找等于给定植x的结点
    bool Insert(int i,const T&x,int d);//在链表中第i个结点插入一个包含x的新结点,d=0按前驱方向,d!=0按后继方向
    bool Remove(int i,T&x,int d);//在链表中删除第i个结点,x为返回值,d=0按前驱方向,d!=0按后继方向
    DblNode<T>*Locate(int i,int d);//在链表中定位序号为i的结点,d=0按前驱方向,d!=0按后继方向
private:
    DblNode<T> *first;//定义first
};
//
template <class T>
DblList<T>::DblList(T uniqueVal){
    first=new DblNode<T>[uniqueVal];
    if(first==NULL){
        cerr<<"存储分配错误"<<endl;
        exit(1);
    }
    first->rLink=first->lLink=first;
}
//
//
template <class T>
DblNode<T> *DblList<T>::Search(const T&x){
    DblNode<T>*current=first->rLink;//定义一个当前指针类结点,并指向下一个结点。
    while(current !=first&&current->data!=x){
        current=current->rLink;//如果当前结点不是第一个且当前结点指向的数据不是x,current就指向下一个。
    }//如果没找到,current最终会通过附加头结点指向first并退出当前的循环
    if(current!=first)//找到了,说明current并没有回到first
        return current;
    else
        return NULL;
};
//
//
template<class T>
DblNode<T>*DblList<T>::Locate(int i,int d){
    if(first->rLink==first||i==0)//表头结点其实就是第0个结点,当i等于0时返回first即可
        return first;
    DblNode<T> *current;
    if(d==0)
        current=first->lLink;//d=0时往前驱方向走
    else
        current=first->rLink;
    for(int j=1;j<i;j++){
        if (current==first)
            break;//在有些数据下,i的数值可能会大于链表的长度,这时我们需要退出。
        else if(d==0)
            current=current->lLink;//往前驱方向走
        else
            current=current->rLink;//往后继方向走
    }
    if(current!=first)
        return current;
    else
        return NULL;
}
//
//
template <class T>
bool DblList<T>::Insert(int i, const T&x, int d){
    DblNode<T>*current=Locate(i,d);//首先我们需要查找第i个结点
    if(current==NULL)
        return false;//输入的i值不合理,不可能插入
    DblNode<T>*newNode=new DblNode<T>(x);//定义一个新的结点指针,并将x存储在newNode里面。
    if(newNode==NULL){
        cerr<<"存储分配失败"<<endl;
        exit(1);//程序异常,强行退出程序
    }
    if(d==0){//前驱方向上插入
        newNode->lLink=current->lLink;
        current->lLink=newNode;
        newNode->lLink->rLink=newNode;
        newNode->rLink=current;
    }
    else{
        newNode->rLink=current->rLink;
        current->rLink=newNode;
        newNode->rLink->lLink=newNode;
        newNode->lLink=current;
    }
    return true;
};
//
//
template <class T>
bool DblList<T>::Remove(int i,T&x,int d) {
    DblNode<T>*current=Locate(i,d);//定位第i个结点
    if(current==NULL)
        return false;//输入的i值不合理,不可能删除
    current->rLink->lLink=current->lLink;//从lLink中摘下
    current->lLink->rLink=current->rLink;//从rLink中摘下
    x=current->data;//删除的值赋值给x
    delete current;//删除
    return true;
};
//
template <class T>
void xunhuan(DblList<T>& x,int n,int m){
    DblNode<T> *p=x.Locate(1,0),*pre=NULL;
    for (int i=0;i<n-1;i++)
        for(int j=1;j<m;j++){
            pre=p;
            p=p->rLink;
        }
}
int main(){
    int n;
    cin>>n;
    DblList<int> x;
    for(int i=0;i<n;i++)
        for(int j=0;j<2*n;i++)
            x.Insert(i,j,0);
    return 0;
}

查看全部
weixin_43077261
TSZITB
2019/03/18 01:00
  • c++
  • 点赞
  • 收藏
  • 回答
    私信

1个回复