[Error] no matching function for call to 'CreatList(int&)'


#include <iostream>
using namespace std;
#include<stdlib.h>

template <class DT>
struct LNode                                        //链表结点
{
    DT data;                                        //数据域,存储数据元素值
    LNode *next;                                    //指针域,指向下一个结点
};

template <class DT>
bool *CreatList(int n)                  //创建有n个结点的循环链表
{
    int i; 
    LNode<DT> *head=NULL;                //开始存放第一个编号 
    LNode<DT> *p;                            
    LNode<DT> *q;                            
    p=(LNode<DT>*)malloc(sizeof(LNode<DT>)); 
    head=p;                                
    p->data=1;                            
    
    for(i=2;i<=n;i++)
    {
        q=(LNode<DT>*)malloc(sizeof(LNode<DT>));        //为每一个结点存放一个数据编号 
        q->data=i;                    
        p->next=q;                        
        p=q;                            
    }
    
    p->next=head;                        //最后一个结点指向头部,形成循环链表 
    return head;
}

template <class DT>
bool PrintList(LNode<DT> *head,int k,int m)          //结点的输出和删除 
{
    int i;
    LNode<DT> *p=head;
    LNode<DT> *temp=p;                    //用temp临时保留创建的结点数 
    
    while(p->data!=k)            //从第k个结点开始报数
        p=p->next;
    
    if(m==1){
    while(p->next!=p)
    {
        temp=p->next;                 
        cout<<"%d,"<<temp->data<<endl;    
        p->next=temp->next;             
        delete temp;                //报到数的人退出 
    }
    }
    else{
    while(p->next!=p)            //链表存在最后一个结点时退出循环 
    {    
        for(i=1;i<m;i++)
        {
            temp=p;        
            p=p->next;
        }
        printf("%d,",p->data);
        temp->next=p->next;    
        free(p);                //被叫到号数结点出列释放内存空间 
        p=temp->next;        //链表中存在两个及两个以上结点时继续报数 
        
    }
    }
    cout<<"%d\n"<<p->data<<endl;
    free(p);
}
 
int main()
{
    int n,m,k;
    LNode<int> *head;
    cout<<"请输入人数,约定编号,密码:"<<endl;
    cin>>n>>k>>m;
    PrintList(CreatList(n),k,m);
    return 0;
}