首页 > 试题广场 >

单链表实现的栈,栈顶指针为Top(仅仅是一个指针),入栈一个

[单选题]
单链表实现的栈,栈顶指针为Top(仅仅是一个指针),入栈一个P节点时,其操作步骤为()
  • Top->next=p;
  • p->next=Top->next;Top->next=p;
  • p->next=Top;Top=p->next;
  • p->next=Top;Top=Top->next;
推荐
栈的表示在不同的书上一般有两种表达方式:
1.top指针指向栈顶元素,这样下一个出栈的元素就是top指向的结点元素;此时入栈操作为p->next=Top; Top=p;
2.top指向下一个可以入栈的位置,这样就相当于top是带头结点的链表中的头节点,然后入栈的话就要插入到top的下一个节点位置;此时入栈操作为p->next=Top->next;Top->next=p;
因为题目中并没有明确表示有没有头节点(相对于链表来说),因此这里根据答案来选择,只有B项符合上面的第二种表达方式。
编辑于 2015-11-26 00:49:13 回复(6)
单链表的栈,栈顶就是第一个节点,这里可以有两种实现:
1、top节点表示真实的栈顶节点;
2、top节点只是一个标识,其next才是栈顶节点。
对于1,入栈操作是在top前插入节点:p->next = top; top = p;
对于2,入栈操作是在top后插入节点:p->next = top->next; top->next = p;
所以,选B。
发表于 2015-09-09 11:04:26 回复(0)
此题答案应该是C
B答案对应的栈结构不能出栈。
B:
Top指向的结构的next是NULL。
栈项所指元素的下一个元素指向Top所指的元素。
发表于 2015-09-07 21:55:39 回复(7)
争论没太大意思,只奉上这张图了。。。
编辑于 2015-09-08 14:07:54 回复(3)
应该是top->next = p;top = p;吧,怎么也得把top指向p啊
发表于 2015-09-08 10:53:33 回复(1)
答案是B
    链栈只能在头部实现插入删除,实际就是在TOP指针后面添加元素,然后把TOP指向栈顶结点,接下来就是头插法,所以为p->next=Top->next;Top->next=p;
编辑于 2015-11-26 00:46:58 回复(8)
如果选B则TOP为节点 如果选C则TOP为指针
发表于 2015-09-08 09:43:20 回复(1)
B :是头插法 top指针都不动的
C :top=p->next;应该改为 top=p,top指针一直往左移动
如果这样:top->next=p ; top=p ;则top指针往右移动
发表于 2016-03-18 14:46:47 回复(0)
发表于 2017-08-24 21:03:40 回复(1)
栈的链式存储结构(栈顶放在单链表的头部)--进栈操作 1.把当前的栈顶元素Top赋值给新结点的直接后继p->next; 2.将新的结点p赋值给栈顶指针Top。 选C
发表于 2015-09-08 09:03:16 回复(0)
题目补充了: top仅仅是一个指针,不是节点。
发表于 2018-11-19 21:44:44 回复(0)
答案是B
    链栈只能在头部实现插入删除(必须是带头结点的链表,为什么呢——如果top是尾指针,那么是无法完成出栈操作的!),然后就是头插法啦,因此为p->next=Top->next;Top->next=p;
发表于 2015-09-09 22:49:04 回复(0)
链表栈谁用头结点。。。把头伸过来,给你看样宝贝
发表于 2015-09-08 11:02:42 回复(0)
这题没有正确答案,b看似是对的,但是关键它最后没有维护top的指向
发表于 2024-11-16 16:01:12 回复(0)
发表于 2023-11-19 18:43:50 回复(0)
Top永远是你Top
发表于 2022-10-26 08:48:35 回复(0)
A明显不对吧,top不应该还要改成p嘛
发表于 2022-05-21 10:06:51 回复(0)
Top只是一个指针,它指向栈顶,仅用来标识栈顶,而不是栈里面的真是节点,因此把p指向Top的都是错的,排除C,D。 Top指针指向的节点为栈顶真实节点,因此把p指向Top->next即相当于把p连接到栈顶,Top->next=p,相当于把p作为新的栈顶,所以选B。 A的话只是把指针Top指向了p,但是p并没有与原栈连接。
编辑于 2022-04-07 16:12:08 回复(0)
原来链表栈是在头结点处入栈,我一直以为是尾部入栈。
发表于 2022-04-07 11:47:59 回复(0)
Top是个指针指向的是栈顶(一个数据域,可以是空) 插入新的节点p 那么它必须先指向Top指针指向的数据 (如果直接指向top会丢失) 最后Top永远指向栈顶也就是节点p
发表于 2022-04-05 16:06:06 回复(0)