看不懂数据结构啊~

来源:百度知道 编辑:UC知道 时间:2024/05/07 06:17:31
在数据元素a和数据元素b之间插入数据元素x,p为指向a结点的指针,假设s为指向x元素的指针,则:
s->next=p->next;p->next=s;是什么意思啊?->和=又是什么意思?我晕了

=是赋值运算符。s->next代表的是结构体的next元素。
相当于1 ,2 ,3 都是由线连着的

先让1的线连到2,再把2的线连到3

很简单啊,->是表示调用成员s->next表示它的指针域=是赋值运算符啊。如在s和p中插入x,开始时是s->next=p要插入的话就把x连在s后,即s->next=x还要把x和p连上,即x->next=p这是链表的插入方法

上面的那两句是链表结构中的典型语句。
一般在这之前都先定义一个结构体
typedef struct node
{
typename data;
node *next;
}NODE;
再看你写的那两句:s->next=p->next;p->next=s;
NODE *s,*p;
s->next=p->next;
p->next=s;
它的作用就是把*p的下一个结点的地址赋给s->next,再把s(它本身就是地址)赋给p->next

->是指向结构体成员运算符,用于有指针指向节点的情况下,例如:
struct number{
int num;
struct number *next;
}a;
struct number *b;
b=&a;
则a是一个结构体变量,b指向这个结构体变量,这时,当你想引用结构体中的某个元素时,有两种方法,上例结构体中的num元素可以这样使用:a.num或b->num,这两种是一样的

=是赋值运算符,就是把等号右边的值赋给等号左边的变量。

本题中,原本a的下一个元素是b,而p指向a,自然p->next就是a的下一个元素即b的地址啦,把它赋给s->next意思是把b节点连接到x后面,第二句意思是把x节点连接到a后面,这样不就实现了在a和b中插入一个数的目的了吗?

另外,注意这两个句子位置是不可以颠倒的,若先写第二句,后写第一句,p->ne