niusouti.com

链栈一般不需要头结点,因为无头结点的链栈运算也很方便。()此题为判断题(对,错)。

题目
链栈一般不需要头结点,因为无头结点的链栈运算也很方便。()

此题为判断题(对,错)。


相似考题

3.阅读下列说明和c函数代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】对二叉树进行遍历是二叉树的一个基本运算。遍历是指按某种策略访问二叉树的每个结点,且每个结点仅访问一次的过程。函数InOrder。()借助栈实现二叉树的非递归中序遍历运算。设二叉树采用二叉链表存储,结点类型定义如下:typedef struct BtNode{ElemTypedata; /*结点的数据域,ElemType的具体定义省略*/struct BtNode*ichiid,*rchild; /*结点的左、右弦子指针域*/)BtNode,*BTree;在函数InOrder()中,用栈暂存二叉树中各个结点的指针,并将栈表示为不含头结点的单向链表(简称链栈),其结点类型定义如下:typedef struct StNode{ /*链栈的结点类型*/BTree elem; /*栈中的元素是指向二叉链表结点的指针*/struct StNode*link;}S%Node;假设从栈顶到栈底的元素为en、en-1、…、e1,则不含头结点的链栈示意图如图5—5所示。【C函数】int InOrder(BTree root) /*实现二叉树的非递归中序遍历*/{BTree ptr; /*ptr用于指向二又树中的结点*/StNode*q; /*q暂存链栈中新创建或待删除的结点指针+/StNode*stacktop=NULL; /*初始化空栈的栈顶指针stacktop*/ptr=root; /*ptr指向二叉树的根结点*/while( (1 ) I I stacktop!=NULL){while(ptr!=NULL){q=(StNode*)malloc(sizeof(StNode));if(q==NULL)return-1;q->elem=ptr;(2) ;stacktop=q; /*stacktop指向新的栈顶*/ptr=(3 ) ; /*进入左子树*/}q=stacktop; (4) ; /*栈顶元素出栈*/visit(q); /*visit是访问结点的函数,其具体定义省略*/ptr= (5) ; /*进入右子树*/free(q); /*释放原栈顶元素的结点空间*/}return 0;}/*InOrder*/

更多“链栈一般不需要头结点,因为无头结点的链栈运算也很方便。() ”相关问题
  • 第1题:

    若栈采用链式存储且仅设头指针,则( )时入栈和出栈操作最方便。

    A.采用不含头结点的单链表且栈顶元素放在表尾结点B.采用不含头结点的单链表且栈顶元素放在表头结点C.采用含头结点的单循环链表且栈顶元素随机存放在链表的任意结点D.采用含头结点的双向链表且栈顶元素放在表尾结点


    正确答案:B

  • 第2题:

    若链栈采用无头结点的单链表存储,top指向栈顶。若想摘除栈顶结点,并将删除结点的值保存到x中,则应执行操作()。

    A.x=top->data;top=top->next;

    B.top=top->link;x=top-> next;

    C.x=top;top=top-> next;

    D.x=top-> next;


    x=top->data;top=top->next ;

  • 第3题:

    设带有头结点链栈,其栈项指针为top,向链栈中插入一个s结点时,则执行()

    A.s->next=top->next; top->next=s

    B.s->next=top->next; top=s

    C.s->next=top; top->next=s

    D.top->next=s; s->next=top->next


    B

  • 第4题:

    若栈采用链式存储且仅设头指针,则( )时入栈和出栈操作最方便。

    A.采用不含头结点的单链表且栈顶元素放在表尾结点
    B.采用不含头结点的单链表且栈顶元素放在表头结点
    C.采用含头结点的单循环链表且栈顶元素随机存放在链表的任意结点
    D.采用含头结点的双向链表且栈顶元素放在表尾结点

    答案:B
    解析:
    本题考查数据结构基础知识。
    栈的操作要求是后进先出,而且仅在表尾一端加入和删除元素。对单链表进行操作时,必须从头指针出发。根据栈的操作要求,单循环链表和双向链表都是没有必要的,而且选项c中将栈顶元素任意存放是错误的。
    可以采用单链表作为栈的存储结构,将表头作为栈顶来使用。
    含头结点的单链表如下图所示,其中La为头指针,La指向的结点为头结点。

    不含头结点且栈顶元素放在表尾结点的单链表如下图所示,其中La为头指针,La指向的结点存储了先进入栈且没有出栈的元素。显然,因为要从La出发遍历至表尾才能进行入栈和出栈操作,在这种情况下出栈和入栈都是最低效的,时间复杂度都是O(n)。

    如果采用不含头结点且栈顶元素放在表头的单链表,如下图所示,出栈和入栈操作都在表头,时间复杂度都为O(1)。

  • 第5题:

    11、设带有头结点链栈,其栈项指针为top,向链栈中插入一个s结点时,则执行()

    A.s->next=top->next; top->next=s

    B.s->next=top->next; top=s

    C.s->next=top; top->next=s

    D.top->next=s; s->next=top->next


    s->next=top->next; top->next=s