【悬赏】C语言,数据结构,循环链表问题!

2025-01-31 03:44:00
推荐回答(3个)
回答1:

1、指针指向一个结点是指利用此指针可以直接访问这个结点,包括这个结点的data和next所以指针指向最后一个结点,代表这个指针是最后一个结点的地址
2、循环链表是最后一个结点的next域指向头结点,上面的方法是尾插法建链表,新建的结点插在表尾,即为最后一个结点,所以每建一个,其next域就应修改为head
3、//La和Lb是两个仅设尾指针的循环链表
//将Lb合并到La的表尾,由La指示新表
void MergeList(LinkList * La,LinkList Lb)
{
LinkList p = Lb->next;
Lb->next = (* La)->next;
(* La)->next = p->next;
free(p);
(* La) = Lb;
}

回答2:

1、头指针变量的值是最后一个结点的地址。
2、可以。
3、不可以这样。想像两串念珠,要并成一串,就要在每一串上各挑两颗相邻的珠子,把中间一段绳子剪开,然后把四个线头再交叉结起来。要剪开的就是头结点和次结点中间的那段。
p=ha->next;
q=hb->next;
ha->next=q;
hb->next=p;
我不太理解你为什么要释放hb的头结点。照你创建循环链表的方式,头结点也是链表中的一个结点,除非先删除它,不然不可以释放它。

回答3:

1 你想的第二个。
2 你最后一个节点原来有标记的吧 。 自己定义一个p=head 然后再最后一个节点的时候->next=p
就可以了的。
3 如果你要连接成循环链表的话 。 那么 ha的最后一个节点的指针指向hb , 然后hb最后一个节点 的的指针 指向ha
4 free(hb)