方法1:不改变链表结构的情况下:
① .首先对整个链表进行正向遍历,利用一个临时数组来存储遍历的结点,然后从后边开始输出。
int print_list(Link * Head)//不带头结点
{
Link * p;
int i = 0;
int a[100];
p = Head;
while(p)
{
a[i++] = p->data;
p = p->next;
}
while(i>=0)
{
printf("%d",a[i]);
i--;
}
return 0;
}
② .利用递归的思想来输出
void Print_Reverse_List(PNode * Head)
{
if(Head != NULL)
{
if(Head->next !=NULL)
{
Print_Reverse_List(Head->next);
}
printf("%d",Head->data);
}
}//带头结点
注意:递归的缺点是当链表长度太长时候,可能导致栈溢出,所以不是太好。
方法2:改变链表结构的情况下:
首先将链表逆置,然后遍历,具体逆置的方法见⑦。