zoukankan      html  css  js  c++  java
  • 链表常见操作练习

    链表是一个很重要的数据结构,一直没有好好的写过练习,这次放假,

    好好练习一下。

    1、定义链表节点

    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    typedef struct Int_Node {
        int data; //数据
        struct Int_Node * next; //指向下一个节点
    }Node;

    2、合并两个有序链表

    //版本1

    Node* Merge(Node *p, Node *q){
        Node *head, *tmp;
        assert(p && q);
        if(p->data <= q->data){
            head = tmp = p;
            p = p->next;
        }else{
            head = tmp = q;
            q = q->next;
        }
        while(p && q){
            if(p->data <= q->data){
                tmp->next = p;
                tmp = p;
                p = p->next;
            }else{
                tmp->next = q;
                tmp = q;
                q = q->next;
            }
        }
        if(p){
            tmp->next = p;
        }
        if(q){
            tmp->next = q;
        }
        return head;
    }

    //版本2

    Node* Merge2(Node *p, Node *q){
        Node *head = NULL,
      *tmp = NULL,
      *cur = NULL;
        while(p && q){
            if(p->data <= q->data){
                cur = p;
                p = p->next;
            }else{
                cur = q;
                q = q->next;
            }
            if(NULL == head){
                head = tmp = cur;
            }else{
                tmp->next = cur;
                tmp = cur;
            }
        }
        if(NULL == p){
            tmp->next = q;
        }else{
            tmp->next = p;
        }
        return head;
    }

  • 相关阅读:
    Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL
    Spring 社区的唯一一个国产开源项目
    使用DynamoShake从dynamodb迁移到mongodb
    1754-I Hate It 线段树(单点替换,区间最值)
    1166-敌兵布阵 线段树(单点增减,区间求和)
    P1078 文化之旅
    P1107 最大整数
    521. [NOIP2010] 引水入城 cogs
    P1137 旅行计划
    P2678 跳石头(二分答案)
  • 原文地址:https://www.cnblogs.com/xkxjy/p/2078107.html
Copyright © 2011-2022 走看看