连接两个单链表并输出

想创建两个单链表A,B,并创建新的单链表C,将A,B接起来
想输出单链表C检查,显示读取访问权限冲突
请求帮助,万分感谢!

#include
using namespace std;
template<class T>
struct Node
{
    T data; //数据域
    struct Node* next; // 指针域,在这里可省略
};

template<class T>
class LinkList
{
public:
    LinkList() { front = new Node; front->next = NULL; }     
        LinkList(T a[], int n);
    ~LinkList();
    Node* Get(int i); //用于找到元素位置
    void Insert(int i, Node* m);//在线性表的第i个位置上插入值为x的新元素
    void Show(Node*head);
private:
    Node* front;//头指针
};
template<class T>
LinkList::LinkList(T a[], int n)//使用尾插法
{
    front = new Node;
    Node* r = front;
    for (int i = 0; i < n; i++)
    {
        Node* s = new Node;
        s->data = a[i];
        r->next = s;
        r = s;
    }
    r->next = NULL;
}
template<class T>
LinkList::~LinkList()
{
    delete[]front;
}
template<class T>
Node* LinkList::Get(int i) //获取线性表第i个位置上的元素
{
    Node* p = front->next; 
    int j = 1;
    while (p && j != i)
    {
        p = p->next;
        j++;
    }
    return p;
}
template<class T>
void LinkList::Insert(int i, Node* m)
{
    Node* p = front;
    if (i != 1)
        p = Get(i - 1);
    if (p)
    {
        p->next = m;//在C/A的最后一个元素next传入A/B第一个元素的位置
    }
}
//遍历输出函数
template<class T>
void LinkList::Show(Node* t)
{
    Node* p = t;
    while (p->next != NULL)
    {
        cout << "try"<< p->next->data;
        p = p->next;
    }
}

int main()
{
    const int n = 10;
    int A[n] = { 1,2,3,4,5,6,7,8,9,10 };
    int B[n] = { 9,8,7,6,5,4,3,2,1,0 };
    LinkList<int>LLA(A, n);
    LinkList<int>LLB(B, n);
    Node<int>* A10_next = LLA.Get(0);
    Node<int>* B1_next = LLB.Get(0);
    LinkList<int> LLC;
    LLC.Insert(0, A10_next);
    LLC.Insert(10, B1_next);
    LLC.Show(LLC.Get(0));
}


 if (i != 1)
        p = Get(i - 1);

insert函数有问题啊,如果i是0,岂不是Get(-1)了?
给改好了

#include<iostream>
using namespace std;
template<class T>
struct Node
{
    T data; //数据域
    struct Node<T>* next; // 指针域,在这里<T>可省略
};
 
template<class T>
class LinkList
{
public:
    LinkList() { front = new Node<T>; front->next = NULL; }     
        LinkList(T a[], int n);
    ~LinkList();
    Node<T>* Get(int i); //用于找到元素位置
    void Insert(int i, Node<T>* m);//在线性表的第i个位置上插入值为x的新元素
    void Show(Node<T>*head);
private:
    Node<T>* front;//头指针
};
template<class T>
LinkList<T>::LinkList(T a[], int n)//使用尾插法
{
    front = new Node<T>;
    Node<T>* r = front;
    for (int i = 0; i < n; i++)
    {
        Node<T>* s = new Node<T>;
        s->data = a[i];
        r->next = s;
        r = s;
    }
    r->next = NULL;
}
template<class T>
LinkList<T>::~LinkList()
{
    delete[]front;
}
template<class T>
Node<T>* LinkList<T>::Get(int i) //获取线性表第i个位置上的元素
{
    Node<T>* p = front->next; 
    int j = 1;
    while (p && j != i)
    {
        p = p->next;
        j++;
    }
    return p;
}
template<class T>
void LinkList<T>::Insert(int i, Node<T>* m)
{
    Node<T>* p = front;
    if (i != 1)
        p = Get(i - 1);
    if (p)
    {
        p->next = m;//在C/A的最后一个元素next传入A/B第一个元素的位置
    }
}
//遍历输出函数
template<class T>
void LinkList<T>::Show(Node<T>* t)
{
    Node<T>* p = t;
    while (p != NULL)
    {
        cout << "try"<< p->data<<" ";
        p = p->next;
    }
}
 
int main()
{
    const int n = 10;
    int A[n] = { 1,2,3,4,5,6,7,8,9,10 };
    int B[n] = { 9,8,7,6,5,4,3,2,1,0 };
    LinkList<int>LLA(A, n);
    LinkList<int>LLB(B, n);
    Node<int>* A10_next = LLA.Get(1);
    Node<int>* B1_next = LLB.Get(1);
    LinkList<int> LLC;
    LLC.Insert(1, A10_next);
    LLC.Insert(11, B1_next);
    LLC.Show(LLC.Get(1));
    system("pause");
}