今天考研频道小编为各位考生整理了“2023考研计算机数据机构基础阶段定义解释之尾插法建表”,相关内容。专业、实用的考研计算机备考内容,能使大家更有效率的掌握相关知识点,避免盲目学!更多考研计算机精彩内容,时刻关注考研频道!
尾插法建表:该方法是将新结点插到当时链表的表尾上,为此,必须增加一个尾指针 r ,
使其始终指向当时链表的尾节点。
void CreateListR (LinkList *&L,int a [ ],int n )
{
LinkList *s,*r; // s 是指向新结点的指针,r 是指向当时链表尾节点的指针
L=(LinkList *) malloc (sizeof(LinkList)); // 创建头结点
r=L; // *r 始终指向尾节点,开始时指向头结点
for (int i=0;i
{
s=(LinkList *) malloc (sizeof(LinkList));
s->data=a [ i ];
r->next=s; // 将*s插入*r之后
r=s;
}
r->next=NULL; // 尾节点next域置为NULL
}
尾插法与头插法最大的不同就在于,头插法只需要一个结点指针,而尾插法需要两个结点指针(不包含指向头结点的指针),多的那一个指针就是指向当时链表尾节点的尾指针,先记住这个不同点,然后我们再来看看代码部分。
和头插法相同的部分就不再重复了, r=L;这一句如果大家真正掌握了上述的话,我想写出来是不费吹灰之力的,没有吸收结点时,尾指针肯定是要指向头结点的,
r->next=s的意思不就是将 s 所指向的结点作为 r 所指向的结点的后继么?这是什么?这不就是尾插法初衷么?尾插法不就是希望新加入的结点时作为当时链表的尾节点么?
r=s;可不要小看了这一句噢,看似简单,却有深意滴,我们可以这样想,尾插法就是新吸收的结点作为当时链表的尾节点,而尾指针就是指向当时链表的尾节点的,那上一步中已经将 s 所指向的结点作为了当时链表的尾节点,那么现在是不是就应该让尾指针指向它呢?那是必须的。
以上就是关于“2023考研计算机数据机构基础阶段定义解释之尾插法建表”的内容,更多考研计算机精彩内容,请持续关注考研频道!
评论列表 人参与