数据结构(C语言)题:循环单链表L中,指针P所指结点为尾结点的条件是()。

Python012

数据结构(C语言)题:循环单链表L中,指针P所指结点为尾结点的条件是()。,第1张

如果存在空头结点

p->next

head

->next

如果不存在空头结点:

p->next

head

判断空链表的条件是:

head==head->next;

rear==rear->next;

扩展资料:

用尾指针rear表示的单循环链表对开始结点a1和终端结点an查找时间都是O(1)。而表的操作常常是在表的首尾位置上进行,因此,实用中多采用尾指针表示单循环链表。

在单链表中,从一已知结点出发,只能访问到该结点及其后续结点,无法找到该结点之前的其它结点。而在单循环链表中,从任一结点出发都可访问到表中所有结点,这一优点使某些运算在单循环链表上易于实现。

基本上就是C语言,返回值它直接写了一个Status,程序里的返回值是TRUE和FALSE,如果把STATUS改成BOOL就是标准的C语言了。C语言是C++的一个子集,这个程序也可以认为是C++写的。

1.

随意画几个二叉树就知道了,这里空链域用ε表示,数一数结点个数与ε个数就知道是n+1了

2.

具体过程在图中给出。

3.

第一步将数据(假设为e)放入s的data中;

第二步s的后继指向q的后继节点;

第三步q的后继指向s

4.

查找72只需2步:

第一步:设立low、high与mid指针,将72与mid指向的值即48比较;

第二部:72比48大,low指向mid+1,重新算出mid,指向72,再与72比较,即查找成功。

最多比较次数参考严蔚敏《数据结构》第九章 查找 220页。

5.

例如图中这棵树,假设i=2,2i=4不大于n,2i+1=5大于n,所以2这个结点没有右子树。

6.

顺序栈的类型定义:

typedef struct{

    char *base        //也可用ElemType,只要定义了就行

    char *top

    int stacksize

}SqStackTp        //注意名字要和主函数里的统一

运行结果:

ABCDEFGHIJKLM

MLKJIHGFEDCBA

结果详解:

在这里将'A'到'A'+12='M'进栈同时输出

for(ch=’A’ch<=’A’+12ch++)

{  Push(&sq,ch)

printf(“%c”,ch)

}

在这里将'A'到'M'出栈同时输出

while(!EmptyStack(sq))

{  Pop(&sq,&ch)

printf(“&c”,ch)

}  printf(“\n”)

由于栈是后进先出,所以就有这样的结果

7.

void converse(int n,int d){

    SqStack S        //新建一个栈

    InitStack(S)     //初始化栈

    int k,e

    while(n>0){

        k=n%d

        push(S,k)

        n=n/d

    }//将余数进栈

    while(S.top!=S.base){

        pop(S,e)

        printf("%1d",e)

    }//输出结果

}

8.

先序遍历:ABCDEF

中序遍历:BCDAFE

后序遍历:DCBFEA