zoukankan      html  css  js  c++  java
  • 链表指针相关

    二叉树

    typedef struct Node
    {
        int data;
        struct Node *lchild, *rchild;
    } Node, *Tree;
    int f, a[10005];
    Tree build(int cur)
    {
        Tree T;
        if (f)
        {
            T = NULL;
            return T;
        }
        int p = a[cur];
        if (p == -1)
            f = 1, T = NULL;
        else if (p == 0)
            T = NULL;
        else
        {
            T = (Node *)malloc(sizeof(Node));
            T->data = p;
            T->lchild = build(cur * 2 + 1);
            T->rchild = build(cur * 2 + 2);
        }
        return T;
    }
    void destory(Tree t)
    {
        Tree cur = t;
        if (cur != NULL)
        {
            destory(cur->lchild);
            destory(cur->rchild);
            free(cur);
            cur=NULL;
        }
    }

    链表

    #include <stdio.h>
    #include <stdlib.h>
    struct node
    {
        int data;
        struct node *next;
    };
    struct node *inset(struct node *head, int n)
    {
        int i;
        struct node *p, *q, *tail;
        q = head;
        for (i = 0; i < n; i++)
        {
            p = (struct node *)malloc(sizeof(struct node));
            scanf("%d", &p->data);
            p->next = q->next;
            q->next = p;
            q = p;
        }
        return (head);
    }
    int main()
    {
        int i, j, n, m, a, b, c, k;
        struct node *head, *p, *q, *tail;
        scanf("%d", &n);
        for (i = 0; i < n; i++)
        {
            scanf("%d%d%d", &m, &a, &b);
            head = (struct node *)malloc(sizeof(struct node));
            head->next = NULL;
            head = inset(head, m);
            q = head;
            while (q->next != NULL)
            {
                k = 1;
                if ((q->next->data >= a) && (q->next->data <= b))
                {
                    k = 0;
                    p = q->next;
                    q->next = p->next;
                    free(p);
                }
                if (k != 0)
                    q = q->next;
            }
            p = head;
            p = p->next;
            int f = 0;
            if (p == NULL)
            {
                free(head);
                printf("-1");
            }
            else
                while (p != NULL)
                {
                    q = p;
                    if (f)
                        printf(" ");
                    printf("%d", p->data);
                    f = 1;
                    p = p->next;
                    free(q);
                }
            printf("
    ");
        }
        return 0;
    }

    链表逆序

    void reverse_linklist(struct node*& head)
    {
        node *p = head;
        if(p->next == NULL){
            return;
        }
        head = p->next;
        reverse_linklist(head);
        p->next->next = p;
        p->next = NULL;
    }

    TZOJ1216: 一元多项式求和 

    #include <bits/stdc++.h>
    using namespace std;
    
    struct Node
    {
        double coe;
        int exp;
        struct Node *next;
    };
    
    Node *add(Node *a, Node *b)
    {
        Node *p = a;
        while (p->next)
        {
            if (p->next->exp > b->exp)
            {
                b->next = p->next;
                p->next = b;
                return a;
            }
            else if (p->next->exp == b->exp)
            {
                p->next->coe += b->coe;
                if (p->next->coe == 0)
                {
                    Node *q = p->next;
                    p->next = p->next->next;
                    delete q;
                    return a;
                }
                return a;
            }
            p = p->next;
        }
        b->next = p->next;
        p->next = b;
        return a;
    }
    
    void Print(Node *head)
    {
        Node *t = head;
        head = head->next;
        delete t;
        while (head)
        {
            if (fabs(head->coe) >= 1e-6)
            {
                printf("%.2f %d
    ",head->coe,head->exp);
            }
            Node *p = head;
            head = head->next;
            delete p;
        }
    }
    
    int main()
    {
        int T;
        cin>>T;
        while (T--)
        {
            Node *head = new Node;
            head->next = NULL;
            int n;
            cin>>n;
            while (n--)
            {
                Node *t = new Node;
                cin>>t->coe>>t->exp;
                head = add(head, t);
            }
            cin>>n;
            while (n--)
            {
                Node *t = new Node;
                cin>>t->coe>>t->exp;
                head = add(head, t);
            }
            Print(head);
            if(T)cout<<"
    ";
        }
        return 0;
    }

    CSS控制单词换行 word-break:break-all;

    const double X::PI=acos(-1.0);
    cout<<setiosflags(ios::fixed)<<setprecision(2)<<X::PI<<endl;

  • 相关阅读:
    STM32中GPIO的8种工作模式
    robots.txt与搜索引擎
    关于《腾讯工具类APP的千年老二》的读后感
    PCB布线的操作步骤
    c语言数据库编程ODBC
    锂电池相关结构优势特点及其保护电路解析方案
    C语言中的#与##字符的作用
    PADS中Layer的描述说明
    吃了单片机GPIO端口工作模式的大亏——关于强推挽输出和准双向口(弱上拉)的实际应用
    Protel与PADS之间相关文件的转换
  • 原文地址:https://www.cnblogs.com/BobHuang/p/7113152.html
Copyright © 2011-2022 走看看