从尾到头打印链表

来源:互联网 发布:win7 64位数据库下载 编辑:程序博客网 时间:2024/06/06 04:52

1.第一种方法:

我们可以利用stack先进后出的特性来进行中转。

         stack<Node*> s;

         Node*p=head->next;

         while(p)

         {

                  s.push(p);

                  p=p->next;

         }

         while(!s.empty())

         {

                  printf("%d",s.top()->data);

                  s.pop();

         }

这样很容易就能让链表倒序输出。

 

2.第二种方法:

我们也可以用递归函数来倒换

void printListrever(Node *pHead)

{

         if(pHead==NULL)

         {

                  return;

         }

         printListrever(pHead->next);

         printf("%d",pHead->data);

}

这样也能让链表倒序输出,只是鲁棒性差(不能有太深层的递归)。

 

3.第三种方法

我们可以对链表进行反转后顺序输出。

void reserv(Node * pHead)

{

 

         Node*pPre=pHead;

         if(pHead->next==NULL)

         {

                  return;

         }

         Node*pCur=pPre->next;

         if(pCur->next==NULL)

         {

                  return;

         }

         Node*pPost=pCur->next;

         while(pPost)

         {

                  pCur->next=pPre;

                  if(pPre==pHead)

                  {

                           pCur->next=NULL;

                  }

                  pPre=pCur;

                  pCur=pPost;

                  pPost=pPost->next;

         }

 

         pCur->next=pPre;

         pHead->next=pCur;

}

输出后还须给转过回来。

0 0
原创粉丝点击