更多"以下为单链表的建表算法,分析算法,请在______处填上正确的语句。 "的相关试题:
[填空题]以下为单链表的建表算法,分析算法,请在______处填上正确的语句。
lklist create_iklist2( ) /*直接实现的建表算法。*/
{ head=malloc(size);
p=head;
scanf("%",&x);
while(X!=’$’)
{ q=malloc(size);
q—>data=x;
p—>next=q;
______;
scanf("%",&x);
}
______;
return(head);
}
此算法的量级为______。
[填空题]以下为单链表的删除运算,分析算法,请在______处填上正确的语句。
void delete_lklist(1klist head,int i)
{ p=find_lklist(head,i-1);
if(______)
{ q=______;
p—>next=q—>next;
free(q);
}
else error("不存在第i个结点")
}
[单项选择]将长度为,z的单链表链接在长度为m的单链表之后的算法的时间复杂度为 。
A. O(1)
B. O(n)
C. O(m)
D. O(m+n)
[填空题]以下为顺序表的插入运算,分析算法,请在______处填上正确的语句。
void insert_sqlist(sqlist L,datatype x,int i)/*将X插人到顺序表L的第i-1个位置*/
{ if(L.1ast==maxsize)error("表满");
if((i<1)||(i>L.last+1))error("非法位置");
for(j=L.last;j≥i;j--)
L.data[i-]=X;
L.last=L.last+1;
}
[填空题]以下为单链表的插入运算,分析算法,请在______处填上正确的语句。
void insert_lklist(lklist head,datatype x,int i)
/*在表head的第i个位置上插入一个以x为值的新结点*/
{ p=find_lklist(head,i-1);
if(p==NULL)error("不存在第i个位置");
else{s=______;s—>data=x;
s—>next=______;
p—>next=s;
}
}
[简答题]单链表L是一个带有头结点的有序链表,设计一个算法判断L是否为按数值递减的链表。如果l是递减链表,那么就返回1,否则返回0。请回答下列问题:
给出算法的主要思想;
[简答题]试编写一个建立带表头结点的双向循环链表的算法。
[多项选择]设计一个用链表表示的直接选择排序算法。
[单项选择]算法分析的目的是( )。
A. 找出数据结构的合理性
B. 找出算法中输入和输出之间的关系
C. 分析算法的易懂性和可靠性
D. 分析算法的效率以求改进
[简答题]设计在无头结点的单链表中删除第i个结点的算法。
[简答题]以二叉链表作为存储结构,试编写求二叉树中叶子数的算法。
[填空题]【说明】
下面的程序构造一棵以二叉链表为存储结构的二叉树算法。
【函数】
BTCHINALR *createbt ( BTCHINALR *bt )
BTCHINALR *q;
struct node1 *s [30];
int j,i;
char x;
printf ( "i,x =" ); scanf ( "%d,%c",&i,&x );
while (i!=0 && x!=’$’)
q = ( BTCHINALR* malloc ( sizeof ( BTCHINALR )); //生成一个结点
(1) ;
q->1child = NULL;
q->rchild = NULL;
(2) ;
if( (3) ;)
j=i/2 //j为i的双亲结点
if(i%2==0
(4) //i为j的左孩子
else
(5) //i为j的右孩子
printf ( "i,x =" ); scanf ( "%d,%c",&i,&x );
return s[1]