一个链表的结点结构:
struct Node
{
int data;
Node *next;
};
typedef struct Node Node;
(1)已知链表的头结点head,写一个函数把这个链表逆序
template <class T>
void Chain<T>::Reverse()
{
if (head == NULL || head->Next == NULL)
return;
ChainNode<T> *pTemp1 = head; //暂存第一个结点
ChainNode<T> *pNode = head->Next; //用来遍历整个链表
ChainNode<T> *pTemp2 = head->Next; //用来暂存第三个结点
pTemp1->Next = NULL;
while (pNode->Next)
{
pTemp2 = pNode->Next;
pNode->Next = pTemp1;
pTemp1 = pNode;
pNode = pTemp2;
}
pNode->Next = pTemp1;