zoukankan      html  css  js  c++  java
  • c++数据结构随笔(1)

    创建数据结构单链表的时候,突然碰到基础不牢固的问题,指针问题。就当复习指针了。

    问题是如果三个指针a和b和r,

    b=a;

    b->next = r;

    那么a->next会不会变?

    然后写了一个小的cpp验证了一下。

    struct node{
        int data;
        node *next;
     
    };
    int main()
    {
        node *p = (node*)malloc(sizeof(node));
        node *q = p;
        node *r = (node*)malloc(sizeof(node));
     p->next = NULL;
     cout<<q->next<<endl;
        p->next = r;
        cout<<q->next<<endl;
        return 0;
    }

    结果是不一样的,说明q->next会随着p->next的指向变化而变化。

    印证了我最开始的想法。

    然后又接着想,

    b=a;

    a->next = r;

    那么b->next会不会变?

    答案也是会变的,所以如果把b和a指向同一个区域(即b=a),那么可以通过改变a->next来改变b->next。

    根据最初的假设接着继续想,

    b=a;

    a=r;

    b的指向会不会变?

    int main()
    {
        node *p = (node*)malloc(sizeof(node));
        node *q = p;
        node *r = (node*)malloc(sizeof(node));
        cout<<q<<endl;
        p = r;
        cout<<q<<endl;
        cout<<p<<endl;
        return 0;
    }

    答案是不会哦,

    总结:

    b=a  这个语句只表示b和a指向同一片区域,如果a改变指向,b的指向还是不会变的。

    而b=a之后,改变b->next和a->next的同时也可以改变对方。

  • 相关阅读:
    最大子数组的求解(包括首尾相接成环)
    学习进度条第五周
    学习进度条第四周
    学习进度条第三周
    软件工程概论作业二
    软件工程个人作业01
    软件工程概论总结
    梦断代码阅读笔记01
    构建之法阅读笔记04
    构建之法阅读笔记03
  • 原文地址:https://www.cnblogs.com/qjqj0-0/p/11807512.html
Copyright © 2011-2022 走看看