链表逆序(Intel笔试题)

来源:互联网 发布:360网络联盟 编辑:程序博客网 时间:2024/04/30 09:00

 已知链表的头节点head,写一个函数把链表逆序

  1. #include<iostream>
  2. using namespace std;
  3. class Node
  4. {
  5. public:
  6.     int data;
  7.     Node* next;
  8. };
  9. Node* ReverseList(Node *head)
  10. {
  11.     if((head->next == NULL) || (head == NULL))
  12.         return head;
  13.     Node *temp1 = head;
  14.     Node *temp2;
  15.     Node *temp3 = temp1->next;
  16.     temp1->next = NULL;
  17.     while(temp3->next != NULL)
  18.     {
  19.         temp2 = temp3;
  20.         temp3 = temp3->next;
  21.         temp2->next = temp1;
  22.         temp1 = temp2;
  23.     }
  24.     temp3->next = temp1;
  25.     return temp3;
  26. }
  27. int main()
  28. {
  29.     Node* head1 = new Node();
  30.     Node* head2 = new Node();
  31.     Node* head3 = new Node();
  32.     Node* head4 = new Node();
  33.     Node* head5 = new Node();
  34.     Node* head6 = new Node();
  35.     Node* head7 = new Node();
  36.     head1->data=1;
  37.     head2->data=2;
  38.     head3->data=3;
  39.     head4->data=4;
  40.     head5->data=5;
  41.     head6->data=6;
  42.     head7->data=7;
  43.     head1->next=head2;
  44.     head2->next=head3;
  45.     head3->next=head4;
  46.     head4->next=head5;
  47.     head5->next=head6;
  48.     head6->next=head7;
  49.     head7->next=NULL;
  50.     Node *temp = ReverseList(head1);
  51.     while(temp != NULL)
  52.     {
  53.         cout<<temp->data<<"/t";
  54.         temp = temp->next;
  55.     }
  56.     cout<<endl;
  57.     
  58.     delete head1,head2,head3,head4,head5,head6,head7;
  59.     return 0;
  60. }
原创粉丝点击