首页 > 代码库 > 单链表逆序

单链表逆序

非常简单,就当练个手吧

 1 //单链表逆序问题,其实很容易的,就是把指针指向给变一下,注意的几个问题 2 //(1)如果就一个元素,不算头结点,直接返回 3 //(2)注意头结点最后要单独处理问题 4 #include <iostream> 5 using namespace std; 6  7 typedef struct linknode{ 8     int val; 9     linknode * next;10 }node,*list;                  //加typedef说明node和list是类型,否则只是一个struct的变量11 12 void reverse(list head)13 {14     if(head==NULL||head->next==NULL||head->next->next==NULL)15         return;16     node * p=head->next;17     node * q=p->next;18     node * t;19     p->next=NULL;20     while(q!=NULL)21     {22         t=q->next;23         q->next=p;24         p=q;25         q=t;26     }27     head->next=p;28 }29 list createlist()30 {31     int data;32     list head=new node;33     head->val=0;34     head->next=NULL;35     node * p=head;36     while(cin>>data)37     {38         node * tmp=new node;39         tmp->val=data;40         tmp->next=NULL;41         p->next=tmp;42         p=tmp;43     }44     return head;45 }46 47 int main()48 {49     node * head=createlist();50     reverse(head);51     node *p=head->next;52     while(p)53     {54         node *q=p->next;55         cout<<p->val<<" ";56         delete p;57         p=q;58     }59     cout<<endl;60     system("pause");61 }