网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

以下用课本中Lnode节点类为单链表类定义定点插入元素方法,请填空 def ins_pos(self,elem,i): q=LNode(elem,None) p=self.head while p is not None and i>0: i-=1 ___________________ q.next=p.next ___________________ self._num+=1


参考答案和解析
D
更多 “以下用课本中Lnode节点类为单链表类定义定点插入元素方法,请填空 def ins_pos(self,elem,i): q=LNode(elem,None) p=self.head while p is not None and i>0: i-=1 ___________________ q.next=p.next ___________________ self._num+=1” 相关考题
考题 若有定义语句: int a[4][10],*p,*q[4]; 且 0 ≤ i4 ,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=a[2][1]

考题 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是A.for(i=1,p=1;i<=5;i++) p*=i;B.for(i=1;i<=5;i++){ p=1; p*=i;}C.i=1;p=1;while(i<=5){p*=i; i++;}D.i=1;p=1;do{p*=i; i++; }while(i<=5);

考题 若有定义语句:"int a[4][10],*P,*q[4];"且0≤i 若有定义语句:"int a[4][10],*P,*q[4];"且0≤iA.D=aB.q[i]=a[i]C.p=a[l]D.P=&a[2][1]

考题 若有以下定义:struct link{ int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是:A.a.next=c; c.next=b;B.p.next=q; q.next=p.next;C.p-next=c; q-next=p-next;D.(*p).next=q; (*q).next=b;

考题 在单链表中在指针p所指节点后插入节点q的操作是A.q:=p↑.link;p↑.link:=q↑.linkB.p↑.link:=q↑.link;q↑.link:=p↑.linkC.q↑.link:=p;p↑.link:=qD.q↑.link:=p↑.link;p↑.link:=q

考题 若有定义语句:int a[4][10],* P,* q[4];且0=i4,则错误的赋值是( )。A.P=aB.q[i]=a[i]C.p=a[i]D.p=a[2][1]

考题 以下程序运行后的输出结果【 】。struct NODE{int k;struct NODE *link;};main(){structNODEm[5],*p=m,*q=m+4;int i=0;while(p!=q){p->k=++i;p++;q->k=i++;q-;}q->k=i;for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

考题 阅读以下程序说明和C程序,将应填入(n)处的字句,写在对应栏内。【程序说明】某网络由n个端点组成,这些端点被物理地分成若干个分离的端点组。同一组内的两件端点i和j,它们或直接相连,或间接相连(端点i和端点j间接相连是指在这两件端点之间有一个端点相连序列,其中端点i和j分别与这相连序列中的某个端点直接相连)。网络的n个端点被统一编号为0,1,…,n-1。本程序输入所有直接相连的端点号对,分别求出系统各分离端点组中的端点号并输出。程序根据输入的直接相连的两件端点号,建立n个链表,其中第i个链表的首指针为s[i],其结点是与端点i直接相连的所有端点号。程序依次处理各链表。在处理s[i]链表中,用top工作链表重新构造s[i]链表,使s[i]链表对应系统中的一个端点组,其中结点按端点号从小到大连接。【程序】ineludedefine N 100typeef struct node{int data;struct node *link;}NODE;NODE * s[N];int i,j,n,t;NODE *q,*p,*x,*y,*top;main(){printf(“Enter namber of components.”);scanf(“%d”,n);for(i=0;i<n;i++) printf(“Enter pairs.\n”);while(scanf(“%d%d”,i,j)==2){ /*输入相连端点对,生成相连端点结点链表*/p=(NODE*)malloc(sizeof(NODE));p→data=j;p→link=s[i];s[i]=p;p=(NODE*)malloc(sizeof(NODE));p→data=i;p→link=s[j];s[j]=p;}for(i=0;i<n;i++) /*顺序处理各链表*/for(top=s[i], (1);top! =NULL;){ /*将第i链表移入top工作链表,并顺序处理工作链表的各结点*/q=top;(2);if(s¨[j=q→data]!=NULL){ /将j链表也移入工作链表*/for(p=s[j];p→link! =NULL;p= p→link);p→link= top;top=s[j];(3);}/*在重新生成的第i链表中寻找当前结点的插入点*/for(y=s[i]; (4);x=y,y=y→link);if(y!=NULL y→data==q→data)free(q); /*因重新生成的第i链表已有当前结点,当前结点删除*/else{(5);if(y ==s[i])s[i]=q;else x→link=q;}}for(i =0;i < n;i++){/*输出结果*/if(s[i]==NULL)continue;for(p=s[i];p!=NULL;){printf(“\t%d”,p→data);q=p→link;free(p);p=q;}printf(“\n”);}}

考题 若有定义语句:int u[4][10],*P,*q[4];且0≤i4,则错误的赋值是A.p=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1]

考题 阅读下列说明和C程序,将应填入(n)处的字句写在对应栏中。[说明]借助一个栈结构,可实现二叉树的非递归遍历算法。InOrderTraverse数实现中序非递归遍历,遍历过程如下:若不是空树,根节点入栈,进入左子树;若已经是空树,则栈顶元素出栈,访问该元素(根节点),进入该节点的右子树,继续直到遍历完成。函数中使用的预定义符号如下:typedef struct BiTNode{int data;struct BiTNode *iChiid,*rChiid;} BiTNode,*BiTree;typedef struct SNode{/*链栈的节点类型*/BiTree elem;struct SNode *next;}SNode;[函数]int InOrderTraverse(BiTree root){BiTree P;SNode *q,*stop=NULL;/*不带头节点的单链表作为栈的存储结构*/P=root;while(p !=NULL || stop !=NULL){if( (1) ){ /*不是空树*/q=(SNode*)malloc(sizeof q);if(q==NULL)return-1;/*根节点指针入栈*/(2);q->elem=P;stop=q;P=(3); /*进入根的左子树*/}else{q=stop;(4); /*栈顶元素出栈*/printf("%d|,q->elem->data); /*防问根节点*/P=(5); /*进入根的右子树*/free(q); /*释放原栈顶元素*/}/*if*/}/*while*/return 0;}/*InOrderTraverse*/(1)

考题 单链表的插入操作procedure insert(L:linklist; I:integer; x:datatype);var p,q:pointer;

考题 执行下列语句后指针及链表的示意图为(43)。L = (LinkList) malloc ( sizeof (LNode) );P = L;for(i =0;i <=3;i ++) {P→next = (LinkList) malloc (sizeof (LNode));P = P→next;P→data = i * i + 1;}A.B.C.D.

考题 若变量已正确定义,要求程序段完成5!的计算,不能完成此操作的程序段是 ______。A.for (i=1,p=1; i<=5; i+ +)p* = i;B.for (i=1;i<=5; i+ +) {p=1;p*=i;}C.i=1;p= 1;while( i<=5) { p* =i;i+ +; }D.i=1;p=1;do{ p*=i;i+ +; } while (i<=5);

考题 阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 函数 GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。 函数DelListElem(LinkList L,int i,ElemType *e) 的功能是删除含头结点单链表的第 i个元素结点,若成功则返回 SUCCESS ,并由参数e 带回被删除元素的值,否则返回ERROR 。 例如,某含头结点单链表 L 如图 4-1 (a) 所示,删除第 3 个元素结点后的单链表如 图 4-1 (b) 所示。图4-1define SUCCESS 0 define ERROR -1 typedef int Status; typedef int ElemType; 链表的结点类型定义如下: typedef struct Node{ ElemType data; struct Node *next; }Node ,*LinkList; 【C 代码】 LinkList GetListElemPtr(LinkList L ,int i) { /* L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点: 若找到,则返回该元素结点的指针,否则返回NULL */ LinkList p; int k; /*用于元素结点计数*/ if (i1 ∣∣ !L ∣∣ !L-next) return NULL; k = 1; P = L-next; / *令p指向第1个元素所在结点*/ while (p (1) ) { /*查找第i个元素所在结点*/ (2) ; ++k; } return p; } Status DelListElem(LinkList L ,int i ,ElemType *e) { /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/ LinkList p,q; /*令p指向第i个元素的前驱结点*/ if (i==1) (3) ; else p = GetListElemPtr(L ,i-1); if (!p ∣∣ !p-next) return ERROR; /*不存在第i个元素*/ q = (4) ; /*令q指向待删除的结点*/ p-next = q-next; /*从链表中删除结点*/ (5) ; /*通过参数e带回被删除结点的数据*/ free(q); return SUCCESS; }

考题 若以下定义: struct link { int data; struct link *next; }a,b,C,*p,*q; 且变量a和b之间已有下图所示的链表结构。指针p指向变量a,q指向变量c,则能够把c插入到a和b之间并形成新的链表的语句组是( )。A.a.next=c;c.next=b;B.p.next=q;q.next=p.next;C.q->next=p->next;p->next=c;D.(*p).next=c;(*q).next=b;

考题 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的单链表,以上算法的功能为:()

考题 试题四(共 15 分)阅读以下说明和 C 函数,填补函数中的空缺,将解答填入答题纸的对应栏内。【说明】简单队列是符合先进先出规则的数据结构,下面用不含有头结点的单向循环链表表示简单队列。函数 enqueue(queue *q,KeyType new_elem) 的功能是将元素new_elem 加入队尾。函数 Dnqueue(queue *q,KeyType *elem)的功能使将非空队列的队头元素出队(从队列中删除),并通过参数带回刚出队的元素。用单向循环链表表示的队列如图 4-1 所示。 图 4-1 单向循环链表表示的队列示意图队列及链表结点等相关类型定义如下:enum {errOr, OK};typedef int KeyType;typedef struct qNode﹛KeyType data;Struct qNode*next;﹜qNode,*Linkqueue; Typedef struct﹛int size;Link:queue rear;}queue; 【C 函数】int enqueue(queue*q,KeyType new_elem)﹛ //元素 new_elem 入队列qNode*p;P=(qNode*)malloc(sizeof(qNode));if(!p)return errOr;P->data=new_elem;if(q->rear)﹛P->next=q->rear->next;();﹜elseP->next=p;﹙﹚;q->size++;return OK;﹜ int Dequeue(queue*q,KeyType*elem)﹛ //出队列qNode*p;if(0==q->size) //是空队列return errOr;P=(); //令 p 指向队头元素结点*elem =p->data;q->rear->next=(); //将队列元素结点从链表中去除if(()) //被删除的队头结点是队列中唯一结点q->rear=NULL //变成空队列free(p);q->size--;return OK;﹜

考题 阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 [说明] 函数GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。 函数DelListElem(LinkList L,int i,ElemType *e)的功能是删除含头结点单链表的第i个元素结点,若成功则返回SUCCESS,并由参数e带回被删除元素的值,否则返回ERROR。 例如,某含头结点单链表L如下图(a)所示,删除第3个元素结点后的单链表如下图(b)所示。 1.jpg #define SUCCESS 0 #define ERROR -1 typedef intStatus; typedef intElemType; 链表的结点类型定义如下: typedef struct Node{ ElemType data; struct Node *next; }Node,*LinkList; [C代码] LinkListGetListElemPtr(LinkList L,int i) { /*L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点; 若找到,则返回该元素结点的指针,否则返回NULL */ LinkList p; int k; /*用于元素结点计数*/ if(i<1 || !L || !L->next) return NULL; k=1; p=L->next; /*令p指向第1个元素所在结点*/ while(p ++k; } return p; } StatusDelListElem(LinkList L,int i,ElemType *e) { /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/ LinkList p,q; /*令P指向第i个元素的前驱结点*/ if(i==1) ______; else p=GetListElemPtr(L,i-1); if(!P || !p->next) return ERROR; /*不存在第i个元素*/ q=______; /*令q指向待删除的结点*/ p->next=q->next; //从链表中删除结点*/ ______; /*通过参数e带回被删除结点的数据*/ free(q); return SUCCESS; }

考题 设顺序表共有n个元素,用数组elem存储,实现在第i个元素之前插入一个元素e的操作,其主要语句为()。A、FOR j=n DOWNTO i DO elem[j]=elem[j+1]; elem[i]=e;B、FOR j=i TO n DO elem[j]=elem[j+1]; elem[i]=e;C、FOR j=i TO n DO elem[j+1]=elem[j]; elem[i]=e;D、FOR j=n DOWNTO i DO elem[j+1]=elem[j]; elem[i]=e;

考题 函数实现单链表的插入算法,请在空格处将算法补充完整。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*/

考题 设顺序存储的线性表存储结构定义为: struct sequnce {ELEMTP elem[MAXSIZE]; int len; /*线性表长度域*/ } 将下列简单插入算法补充完整。 void insert(struct sequnce *p,int i,ELEMTP x) {v=*p; if(i1)||(iv.len+1)printf(“Overflow“); else { for(j=v.len;();j- -)(); v.elem[i]= () ;v.len=(); } }

考题 函数实现单链表的删除算法,请在空格处将算法补充完整。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*/

考题 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()A、for(i=1,p=1;i=5;i++)p*=iB、for(i=1;i=5;i++){p=1;p*=i;}C、i=1;p=1;while(i=5){p*=i;i++;}D、i=1;p=1;do{p*=i;i++;}while(i=5)

考题 填空题函数实现单链表的删除算法,请在空格处将算法补充完整。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*/

考题 填空题设顺序存储的线性表存储结构定义为: struct sequnce {ELEMTP elem[MAXSIZE]; int len; /*线性表长度域*/ } 将下列简单插入算法补充完整。 void insert(struct sequnce *p,int i,ELEMTP x) {v=*p; if(iv.len+1)printf(“Overflow“); else { for(j=v.len;();j- -)(); v.elem[i]= () ;v.len=(); } }

考题 单选题设顺序表共有n个元素,用数组elem存储,实现在第i个元素之前插入一个元素e的操作,其主要语句为()。A FOR j=n DOWNTO i DO elem[j]=elem[j+1]; elem[i]=e;B FOR j=i TO n DO elem[j]=elem[j+1]; elem[i]=e;C FOR j=i TO n DO elem[j+1]=elem[j]; elem[i]=e;D FOR j=n DOWNTO i DO elem[j+1]=elem[j]; elem[i]=e;

考题 单选题以下程序段中,循环次数不超过10的是(  )。A int i=10;do{i=i+1;}while(i0);B int i=int i=5;do{i+=1;}while(i0);C int i=1;do{i+=2;}while(i!=10);D int i=6;do{i-=2;}while(i!=1);