zoukankan      html  css  js  c++  java
  • 链表题

    结点:

    struct Node{
        int data;
        Node *next;
    };
    typedef struct Node Node;
    1. 已知链表的头结点head,链表逆序
      Node* ReverseList(Node *head){
          if(head == NULL || head->next == NULL) return head;
          Node *p1 = head;
          Node *p2 = p1->next;
          Node *p3 = p2->next;
          p1->next = NULL;
          while(p3 != NULL){
              p2->next = p1;
              p1 = p2;
              p2 = p3;
              p3 = p3->next;
          }
          p2->next = p1;
          head = p2;
          return head;
      }
    2. 两个有序链表head1,head2合并成一个有序链表
      Node* Merge(Node *head1, Node *head2){
          if(head1 == NULL) return head2;
          if(head2 == NULL) return head1;
          Node *head = NULL;
          Node *p1 = NULL;
          Node *p2 = NULL;
          if(head1->data < head2->data){
              head = head1;
              p1 = head1->next;
              p2 = head2;
          }
          else{
              head = head2;
              p1 = head1;
              p2 = head2->next;
          }
          Node *pcurrent = head;
          while(p1 != NULL && p2 != NULL){
              if(p1->data < p2->data){
                  pcurrent->next = p1;
                  pcurrent = p1;
                  p1 = p1->next;
              }
              else{
                  pcurrent->next = p2;
                  pcurrent = p2;
                  p2 = p2->next;
              }
          }
          if(p1 != NULL) pcurrent->next = p1;
          if(p2 != NULL) pcurrent->next = p2;
          return head;
      }
    3. 使用递归方法实现合并
      Node* MergeRecursive(Node *head1, Node *head2){
          if(head1 == NULL) return head2;
          if(head2 == NULL) return head1;
          Node *head = NULL;
          if(head1->data < head2->data){
              head = head1;
              head->next = MergeRecursive(head1->next, head2);
          }
          else{
              head = head2;
              head->next = MergeRecursive(head1, head2->next);
          }
          return head;
      }
  • 相关阅读:
    .NET笔试题集(四)
    jquery弹出遮掩层
    LINQ学习(八):强制立即执行
    .NET笔试题集(五)
    LINQ学习(六):OrderBy/Group By子句
    .NET笔试题集(二)
    LINQ学习(九):LINQ to SQL简单应用
    TFS Branch脚本
    分享幻灯片+在线阅读
    C#笔记(五):文件和流
  • 原文地址:https://www.cnblogs.com/yingl/p/5817670.html
Copyright © 2011-2022 走看看