下面的算法是计算不带节点的单链表长度,其中能正确执行的是______。A.Function Length(L:Link) integer begin p:=L; j:=0; while p↑.next≠NIL DO [p:=p↑.next; j:=j+1 ] return(j) end;B.Function Length(L:Link) integer begin p:=L; k:=0; while p≠NIL DO [p:=p↑.next; k:=k+1) return(k) end;C.Function Length(L:Link)integer begin p:=L;k:=0; repeat k:=k+1; p=p↑.next until p=NIL return(k-1) end;D.Function Length(L:Link)integer begin p:=L↑.next; k:=1; while p≠NIL DO [k:=k+1; p:=p↑.next] return(k) end;

下面的算法是计算不带节点的单链表长度,其中能正确执行的是______。

A.Function Length(L:Link) integer begin p:=L; j:=0; while p↑.next≠NIL DO [p:=p↑.next; j:=j+1 ] return(j) end;

B.Function Length(L:Link) integer begin p:=L; k:=0; while p≠NIL DO [p:=p↑.next; k:=k+1) return(k) end;

C.Function Length(L:Link)integer begin p:=L;k:=0; repeat k:=k+1; p=p↑.next until p=NIL return(k-1) end;

D.Function Length(L:Link)integer begin p:=L↑.next; k:=1; while p≠NIL DO [k:=k+1; p:=p↑.next] return(k) end;


相关考题:

在有头结点的单链表L中,向表头插入一个由指针p指向的结点,则执行()。 A.L=p;p->next=L;B.p->next=L;L=p;C.p->next=L;p=L;D.p->next=L->next;L->next=p;

阅读下列程序段#include "stdio.h"typedef struct aa{ int a;struct aa *next; } M;void set(M *k,int i,int *b){ int j,d=0;for(j=1;j i;j++){ k[j-1].next=k[j];k[j-1].a=b[d++]; }k[j].a=b[d]; }main(){ M k[5],*p;int d[5]={23,34,45,56,67};set(k,5,d);p=k+1;printf("%d\n",table); }则下面的表达式在table处,能使程序执行后,打印输出数据45的是A.p-next-aB.++p-aC.(*p).a++D.p++-a

以下程序正确计算p=n!(n=0)的是()。 A.for(p=1.0,k=1;k=n;)p*=k++;B.p= 1.0;k=0;while(kn)p*=++k;C.p= 1.0;k=1;do{++k;p*=k;}while(k=n);D.p=1.0;for(k=n;k=1;k--)p*=k--;

p指向线性链表中某一结点,则在线性链表的表尾插入结点s的语句序列是()。A.while(p->next!=NULL)p=p->next;p->next=s;s->next=NULL;B.while(p!=NULL)p=p->next;p->next=s;s->next=NULL;C.while(p->next!=NULL)p=p->next;s->next=p;p->next=NULL;D.while(p!=NULL)p=p->next->next;p->next=s;s->next=p->next;

已知bead指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有连接点数据域的和值作为函数值返回。请在横线处填入正确内容。{ int data; struct link *next;}main(){ struct link *head;sam(______);{stmct link *p;int s=0;p=head->next;while(p){s+=p->data;p=p->next;}return(s);}

阅读以下应用说明、图和C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。【说明】以下【C++程序】用于实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数主要有:createList():创建按指数降序链接的多项式链表,以表示多项式:reverseList():将多项式链表的表元链接顺序颠倒:multiplyList(ListL1,ListL2)计算多项式L1和多项式L2的乘积多项式。【C++程序】include <iostream.h>class List;class Item {friend class List;private:double quot ;int exp ;Item *next;Public:Item(double_quot,int_exp){ (1) ;}};class List{private:Item *list;Public:List(){list=NULL:}void reverseList();void multiplyList(List L1,List L2);void createList();};void List::createList(){ Item *p,*U,*pre;int exp;double quot;list = NULL;while (1) {cout << "输入多项式中的一项(系数、指数) :" << endl;cin >> quot >> exp:if ( exp<0 )break ; //指数小于零,结束输入if ( quot=0 )continue;p = list;while ( (2) ) { //查找插入点pre = p;p = p->next;}if ( p != NULL exp = p->exp ) {p->quot += quot;continue ;}u =(3);if (p == list)list = u;elsepre->next = u;u ->next = p;}}void List::reverseList(){ Item *p, *u;if ( list==NULL )return;p = list ->next;list -> next = NULL;while ( p != NULL) {u = p -> next;p ->next = list;list = p;p = u;}}void List::multiplyList ( List L1, List L2 ){ Item *pL1,*pL2,*u;int k, maxExp;double quot;maxExp =(4):L2.reverseList();list=NULL;for ( k = maxExp;k >= 0;k-- ){pL1 = L1.list;while ( pL1 != NULL pL1 -> exp > k )pL1 = pL1 ->next;pL2 = L2.1ist;while (pL2 NULL (5))pL2 = pL2 -> next;quot = 0.0;while (pL1 != NULL pL2 != NULL){if(pL1->exp+pL2->exp==k) {(6)pL1 = pL1 -> next;pL2 = pL2 -> next;} else if ( pL1 -> exp + pL2 -> exp > k )pL1 = pL1 -> next;elsepL2 = pL2 -> next;}if ( quot !=0.0 ) {u = new item( quot, k );u -> next = list;list = u;}}reverseList ();L2. reverseList ():}void main(){ List L1,L2,L;

阅读下列程序说明和C++代码,将应填入(n)处。【程序6说明】本程序实现两个多项式的乘积运算。多项式的每一项由类Item描述,而多项式由类List描述。类List的成员函数有:createList():创建按指数降序链接的多项式链表,以表示多项式。reverseList():将多项式链表的表元链接顺序颠倒。multiplyList(List L1,List L2):计算多项式L1和多项式L2的乘积多项式。【程序6】include<iostream.h>class List;class |tem{friend class List;private:double quot;int exp;|tem * next;public:|tem(double_quot,int_exp){ (1) ;}};class List {private:|tem * list;public:List(){list=NULL;}void reverseList();void multiplyList(List L1,List L2);void createList();};void List::createList(){ |tem * p,* u,*pre;int exp;doubte quot;list=NULL;while(1){cout<<"输入多项式中的一项(系数、指数):"<<endl;cin>>quot>>exp:if(exp<0)break; //指数小于零,结束输入if(quot==0)continue;p=list;while((2)){ //查找插入点pre=p;p=p->next;}if(p!=NULLexp==p->exp) {p->quot+=quot;continue;}u=(3);if(p==list) list=u;else pre->next=u;u->next=p;}}void List::reverseList(){ |tem*p,*u;if(list==NULL)return;p=list->next;list->next=NULL;while(p!=NULL)}u=p->next;p->next=list;list=p;p=u;}}void List::multiplyList(List L1,List L2){|tem*pLI,*pL2,*u;int k,maxExp;double quot;maxExp=(4);L2.reverseList();list=NULL;for(k=maxExp;k>=0;k--){pL1=L1.list;while(pL1!=NULLpL1->exp>k)pL1=pL1->next;pL2=L2.list;while(pL2!=NULL(5) pL2=pL2->next;quot=0.0;while(pL1!=NULLpL2!=NULL){if(pL1->exp+pL2->exp==k){(6);pL1=pL1->next;pL2=pL2->next;}else if(pL1->exp+pL2->exp>k) pL1=pL1->next;else pL2=pL2->next;}if(quot!=0.0){u=new |tem(quot,k);u->next=list;list=u;}}reverseList(:);L2.reverseList():}void main(){ ListL1,L2,L;cout<<"创建第一个多项式链表\n";L1.createList();cout<<"创建第二个多项式链表\n";L2.createList();L.multiplyList(L1,L2);}

以下程序的输出结果是( )。 Option Base 1 Private Sub Command1_Click() Dim a(10),p(3) as Integer k=5 For I-1 to 10 a(i)=I Next I For j=1 to3 p(i)=a(I*j) Next j For I=l to 3 k=k+ p (I)*2 Next I Print k End SubA.33B.28C.35D.37

有以下程序: include usingnamespacestd; intmain() { intnum[2][3],*p; intt,i,j,k= 有以下程序: #include <iostream> using namespace std; int main() { int num[2][3],*p; int t,i,j,k=10; p=num[0]; for(i=0;i<2;i++) { for(j=0;j<3;j++) { k++; *p=k; for(t=2;t<*p;t++) { if(!(*p%t)) { j--; *p--; break; } *p++; } } cout<<*(p-1)<<end1; return 0; } 程序运行后的输出结果是( )。A.19B.11C.29D.23

在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() Dim m As Integer, n As Integer, p As Integer m=3: n=5: p=0 Call Y(m, n, p) Print Str(p) End Sub Sub Y(ByVal i As Integer, ByVal j As Integer, k As Integer) k=i+j End Sub 程序运行后,如果单击命令按钮,则在窗体上显示的内容是( )A.4B.6C.8D.10

有如下程序段#include "stdio.h"typedef struct aa{ int a; struct aa *next;} M;void set(M *k,int i,int *b){ int j,d=0; for(j=1;ji;j++) { k[j-1].next=k[j]; k[j-1].a=b[d++]; } k[j].a=b[d];}main(){ M k[5],*p; int d[5]={23,34,45,56,67}; set(k,5,d); p=k+1; printf("%d\n",________);}要输出45,则在下画线处应填入的选项是A.p-next-a B.++p-aC.(*p).a++ D.p++ -a

在窗体上画一个名称为CoilTlilandl的命令按钮,然后编写如下事件过程: Private Sub command1 Click() Dim m As Integer, i As Integer, x(3)As Integer For i=0 To 3:x(i)=i:Next i For i = 1 To 2: Call sub1(x,i):Next i For i = 0 To 3: Print x(i);: Next i End Sub Private Sub sub1(a()As Integer,k As Integer) Dim i As Integer Do a(k)=a(k)+a(k+1) j = j + 1 Loop While j < 2 End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是A.0 3 7 5B.0 1 2 3C.3 2 4 5D.0 5 8 3

有以下程序includemain(){int*p,j; p=NULL p=fun(); for(j=0;j 有以下程序 #include<stdio.h> main() { int *p,j; p=NULL p=fun(); for(j=0;j<4;j+){printf("%d",*p);p++;} } int*fun() { int a[4],k; for(k=0;k<4;k++)a[k]=k; return(A) ; } 程序运行后的输出结果是( )A.程序有错不能运行B.输出4个NULLC.输出0 1 2 3D.输出1 1 1 1

执行下面的程序后,输出的结果是 p=1 For j=1 To 4 p=p - 1:q=0 For k=1 To 4 p=p + 1:q=q + 1 Next k Next j Print p;qA.1 4B.13 4C.12 8D.206

以下程序的输出结果是( )。 Option Base 1 Private Sub Command1 Click() Dim a(10),p(3)as Integer k=5 For I=1 to 10 a(i)=I Next I For j=1 to 3 p(i)=a(I*j) Next j For I=1 to 3 k=k+p(I)*2 Next I Print k End SubA.33B.28C.35D.37

int AA(LNode *HL , ElemType x){int n=0; LNode *p=HL;while (p!=NULL){if (p->data= =x) n++;p=p->next; }return n;}对于结点类型为LNode的单链表,以上算法的功能为:()

函数实现单链表的插入算法,请在空格处将算法补充完整。int ListInsert(LinkList L,int i,ElemType e){ LNode *p,*s;int j; p=L;j=0; while((p!=NULL)(jnext;j++; } if(p==NULL||ji-1) return ERROR; s=(LNode *)malloc(sizeof(LNode)); s-data=e; (1) ; (2) ; return OK;}/*ListInsert*/

下列算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同,试完成该算法。 void DelSameNode(LinkList L) //L是带头结点的单链表,删除其中的值重复的结点// {ListNode * p,*q,*r; p=L-next; //p初始指向开始结点// while(p){ //处理当前结点p// q=p; r=q-next; do { //删除与结点*p的值相同的结点// while(rr-data!=p-data){ q=r; r=r-next; } if(r){ //结点*r的值与*p的值相同,删除*r// q-next=r-next; free(r); r=(); } }while( r ); p=p-next; } }

函数GetElem实现返回单链表的第i个元素,请在空格处将算法补充完整。 int GetElem(LinkList L,int i,Elemtype *e){ LinkList p;int j;p=L-next;j=1; while(pji) return ERROR;*e= (2) ;return OK;}

已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。 a.在P结点后插入S结点的语句序列是()。 b.在P结点前插入S结点的语句序列是()。 c.在表首插入S结点的语句序列是()。 d.在表尾插入S结点的语句序列是()。 (1)P-next=S; (2)P-next=P-next-next; (3)P-next=S-next; (4)S-next=P-next; (5)S-next=L; (6)S-next=NULL; (7)Q=P; (8)while(P-next!=Q)P=P-next; (9)while(P-next!=NULL)P=P-next; (10)P=Q; (11)P=L; (12)L=S; (13)L=P;

写出算法的功能。int L(head){ node * head; int n=0; node *p; p=head; while(p!=NULL) { p=p-next; n++; } return(n); }

已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。 a.删除P结点的直接后继结点的语句序列是()。 b.删除P结点的直接前驱结点的语句序列是()。 c.删除P结点的语句序列是()。 d.删除首元结点的语句序列是()。 e.删除尾元结点的语句序列是()。 (1)P=P-next; (2)P-next=P; (3)P-next=P-next-next; (4)P=P-next-next; (5)while(P!=NULL)P=P-next; (6)while(Q-next!=NULL){P=Q;Q=Q-next;} (7)while(P-next!=Q)P=P-next; (8)while(P-next-next!=Q)P=P-next; (9)while(P-next-next!=NULL)P=P-next; (10)Q=P; (11)Q=P-next; (12)P=L; (13)L=L-next; (14)free(Q);

函数实现单链表的删除算法,请在空格处将算法补充完整。int ListDelete(LinkList L,int i,ElemType *s){ LNode *p,*q; int j; p=L;j=0; while(( (1) )(jnext;j++; } if(p-next==NULL||ji-1) return ERROR; q=p-next; (2) ; *s=q-data; free(q); return OK;}/*listDelete*/

填空题函数实现单链表的删除算法,请在空格处将算法补充完整。int ListDelete(LinkList L,int i,ElemType *s){ LNode *p,*q; int j; p=L;j=0; while(( (1) )(jnext;j++; } if(p-next==NULL||ji-1) return ERROR; q=p-next; (2) ; *s=q-data; free(q); return OK;}/*listDelete*/

填空题函数实现单链表的插入算法,请在空格处将算法补充完整。int ListInsert(LinkList L,int i,ElemType e){ LNode *p,*s;int j; p=L;j=0; while((p!=NULL)(jnext;j++; } if(p==NULL||ji-1) return ERROR; s=(LNode *)malloc(sizeof(LNode)); s-data=e; (1) ; (2) ; return OK;}/*ListInsert*/

填空题写出算法的功能。int L(head){ node * head; int n=0; node *p; p=head; while(p!=NULL) { p=p-next; n++; } return(n); }

填空题函数GetElem实现返回单链表的第i个元素,请在空格处将算法补充完整。 int GetElem(LinkList L,int i,Elemtype *e){ LinkList p;int j;p=L-next;j=1; while(pji) return ERROR;*e= (2) ;return OK;}