思路一:数组法
构建一个Datatype类型的数组,将单链表所有的数据保存下来,
再将数组倒序输出就可以。
缺点:相对于较长单链表不适合,对于较短单链表浪费资源
void printlist(LinkNode* head)
{
Datatype arr[100] ;
int i=0;
while(head!=NULL)
{
arr[i++]=head->data;
head=head->next;
}
while(i!=0)
{
printf("%d",arr[--i];
}
printf("\n");
}
思路二:头插法
建立一个新单链表将旧单链表中的数据按顺序头插入新链表,
再将新单链表输出就完成了倒序打印。
void printlist(LinkNode* phead)
{
//创建新链表
LinkNode* new=NULL;
while(phead!=NULL)
{
//头插入新链表
ListPushFront(&new,phead->data);
phead=phead->next;
}
ListPrint(&new); //打印新链表
ListDestroy(&new); //销毁链表
}
思路三:递归法
递归进行倒序打印,即想打印第一个就需要打印第二个,
以此类推直到最后一个数据先打印出来,再返回去打印之前的数据。
采用递归注意出口条件,该节点和下一个节点是否为空
void Listprint(ListNode* head)
{
if(head!=NULL && head->next!=NULL)
{
Listprint(ListNode* head->next);
}
if(head!=NULL) //防止为空链表
printf("%d\n",head->data);
}