下列关于链式栈的叙述中,错误的是( )。 Ⅰ.链式栈只能顺序访问,而顺序栈不但能顺序访问,还能直接存取 Ⅱ.因为链式栈没有栈满问题,所以进行进栈操作,不需要判断任何条件 Ⅲ.在链式队列的出队操作中,需要修改尾指针的情况发生在空

admin2019-07-18  35

问题 下列关于链式栈的叙述中,错误的是(    )。
    Ⅰ.链式栈只能顺序访问,而顺序栈不但能顺序访问,还能直接存取
    Ⅱ.因为链式栈没有栈满问题,所以进行进栈操作,不需要判断任何条件
    Ⅲ.在链式队列的出队操作中,需要修改尾指针的情况发生在空队列的情况下

选项 A、仅Ⅰ
B、仅Ⅰ、Ⅱ
C、仅Ⅱ
D、Ⅰ、Ⅱ、Ⅲ

答案D

解析 Ⅰ:栈要求只能在表的一端(栈顶)访问、插入和删除,这决定了栈无论采用何种存储方法表示,只能顺序访问,不能直接存取,故Ⅰ错误。
    Ⅱ:每创建新的栈结点时还要判断是否动态分配成功,若不成功,则进栈操作失败。
    StaekN0de *s=new  StaekNode;    if(s==NULL){    printf("结点存储分配失败!\n");    }故Ⅱ错误。
    Ⅲ:首先要清楚链式队列需要两个指针,即头指针和尾指针。当链队列需要插入元素时,在链式队列尾部插入一个新的结点,并且修改尾指针;当链队列需要删除元素时,在链式队列头部删除一个结点,并且修改头指针。所以当链式队列需要进行入队操作时,应该只需修改尾指针即可。但是有一种特殊情况(考生务必记住,因为不少考生在写链式队列出队的算法时,并没有考虑到去判断这种情况),就是当此时只有一个元素时,不妨设此时链式队列有头结点,那么当唯一个元素出队时,应该将头指针指向头结点,并且此时尾指针也是指向该唯一的元素,所以此时需要修改尾指针,并且使尾指针指向头结点,故Ⅲ错误。
转载请注明原文地址:https://kaotiyun.com/show/PJCi777K
0

最新回复(0)