关于链表的个小问题!!不吝赐教!!谢谢!!
程序的目的是把两个小的链表连接起来,形成一个新的链表,但连接时出了问题,编译器的提示我觉得没道理啊...真不明白了..想了好久还是想不通...希望看到的你行行好..帮我一下..感激不尽..#include<iostream>
using namespace std;
template<typename NODETYPE> class List;
template<typename NODETYPE>
class ListNode
{
friend class List<NODETYPE>;
public:
ListNode(NODETYPE &);
private:
ListNode<NODETYPE> *nextPtr;
NODETYPE data;
};//链表结点定义
template<typename NODETYPE>
ListNode<NODETYPE>::ListNode(NODETYPE &info )
:data( info),nextPtr(0)
{
}
template<typename NODETYPE>
class List
{
public:
List();
void insertFromFirst(NODETYPE);
void insertFromLast(NODETYPE);
void removeFromFirst(NODETYPE &);
void removeFromLast(NODETYPE &);
void print();
private:
ListNode<NODETYPE> *firstPtr;
ListNode<NODETYPE> *lastPtr;
};//链表的定义
template<typename NODETYPE>
List<NODETYPE>::List()
{
firstPtr=lastPtr=0;
}
template<typename NODETYPE>
void List<NODETYPE>::insertFromFirst(NODETYPE values)
{
ListNode<NODETYPE> *newPtr=new ListNode<NODETYPE>(values);
if(firstPtr==0)
firstPtr=lastPtr=newPtr;
else
{newPtr->nextPtr=firstPtr;
firstPtr=newPtr;}
}
template<typename NODETYPE>
void List<NODETYPE>::insertFromLast(NODETYPE values)
{
ListNode<NODETYPE> *newPtr=new ListNode<NODETYPE>(values);
if(lastPtr==0)
firstPtr=lastPtr=newPtr;
else
{
lastPtr->nextPtr=newPtr;
lastPtr=newPtr;
}
}
template<typename NODETYPE>
void List<NODETYPE>::removeFromFirst(NODETYPE &temp)
{
ListNode *tempPtr=firstPtr;
if (tempPtr==lastPtr)
firstPtr=lastPtr=0;
else
firstPtr=firstPtr->nextPtr;
temp=tempPtr->data;
delete tempPtr;
}
template<typename NODETYPE>
void List<NODETYPE>::removeFromLast(NODETYPE &temp)
{
ListNode<NODETYPE> *tempPtr=lastPtr;
ListNode<NODETYPE> *loop=firstPtr;
if(firstPtr==0)
firstPtr=lastPtr=0;
else
{
while (loop->nextPtr!=lastPtr)
loop=loop->nextPtr;
}
lastPtr=loop;
temp=tempPtr->data;
delete tempPtr;
}
template<typename NODETYPE>
void List<NODETYPE>::print()
{
ListNode<NODETYPE> *printPtr;
printPtr=firstPtr;
while (printPtr!=0)
{
cout<<printPtr->data<<' ';
printPtr=printPtr->nextPtr;
}
cout<<endl;
}
void main()
{
List<char> list1,list2, newlist;
char a='a',b='b',c;
list1.insertFromFirst(a);
list2.insertFromLast(b);
list1.lastPtr->nextPtr=list2.firstPtr;//...........
newlist.firstPtr=list1.firstPtr;//....这三行要把两个链表连接起来....
newlist.lastPtr=list2.lastPtr;//.......
newlist.print();
}