已知last指向非空单向简单链表的尾结点,将s所指结点加在表尾,不正确的操作是last->next=s;s=last;last->=NULL;____。
时间: 2023-06-03 09:03:59 浏览: 249
不正确的操作是s=last;。因为这个操作会导致s指向last,而不是链表的头结点,从而丢失链表的头指针,造成链表无法访问。正确的操作应该是last->next=s; s->next=NULL; last=s;。
相关问题
为什么非空单循环链表L中*P是尾结点的条件是L不为空且p->next==L
A:非空单循环链表L的尾结点是指指向表头结点的前一个结点。因此,如果链表L为空,则不存在尾结点。而如果*p结点的下一个结点指向的是表头结点,则*p结点是链表L的尾结点。因此,非空单循环链表L中*p是尾结点的条件是L不为空且p->next==L。
在双向链表存储结构中,删除p所指的结点时须修改指针( )。 A.p->next->prior=p->prior; p->prior->next=p->next; B.p->next=p->next->next; p->next->prior=p; C.p->prior->next=p; p->prior=p->prior->prior; D.p->prior=p->next->next; p->next=p->prior->prior;
正确答案是 A.p->next->prior=p->prior; p->prior->next=p->next;
在双向链表中,每个结点都有一个前驱指针 prior 和一个后继指针 next,指向其前驱结点和后继结点。删除某个结点 p 时,需要将其前驱结点的后继指针指向其后继结点,同时将其后继结点的前驱指针指向其前驱结点,即 p->next->prior=p->prior; p->prior->next=p->next; 这样才能保证链表的连续性。选项 B 是删除 p 结点后将其后继结点的前驱指针指向 p 结点的后继结点,而不是指向 p 结点的前驱结点;选项 C 和 D 都存在指针越界的情况,因此都不正确。