想创建两个单链表A,B,并创建新的单链表C,将A,B接起来
想输出单链表C检查,显示读取访问权限冲突
请求帮助,万分感谢!
#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->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));
}