举一反三
- 函数实现单链表的删除算法,请在空格处将算法补充完整。int ListDelete(LinkList L,int i,ElemType *s){LNode *p,*q;int j;p=L;j=0;while(((1) )&&(j
- 函数GetElem实现返回单链表的第i个元素,请在空格处将算法补充完整。 int GetElem(LinkList L,int i,Elemtype *e){ LinkList p;int j;p=L->next;j=1; while(p&&j
- 删除 Status ListDelete(SqList *L,int i) { int j; if((i<1)||(i>L->length)) return ERROR; for(j=i;j<=L->length-1;j++) ___________________; _________________; return OK; }
- 对于带头节点的单链表L1,其节点类型为LinkList,指出以下算法的功能。 void fun(LinkList *&L,ElemType x,ElemType y) { LinkList *p=L->next; while (p!=NULL) { if (p->data==x) p->data=y; p=p->next; } }
- 给定一个带头结点的单链表,设L为头指针,结点的结构定义如下,试写一算法在该链表中删除元素值为e的结点,假设链表中没有元素值重复的结点并且e一定存在。 typedef struct Lnode{ int data; struct Lnode *next; } Lnode,*LinkList; //单链表结构 void (LinkList &L,int e ) { //在该函数中补充代码 }
内容
- 0
已知线性表L的长度为n,执行ListDelete(&L,i,&e)操作后,线性表L的长度为() A: n B: n+1 C: n-1 D: n+2
- 1
已知不带头结点的单链表L,下面用函数实现的在第一个元素前面插入值为x的元素结点的算法错误的是( ) A: void insert(List *L,elemtype x){ node d=new node(x); d.next=*L; *L=&d;} B: List * insert(List *L,elemtype x){ node d=new node(x); d.next=*L; *L=&d; return L;} C: void insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; p->next=q; L=&q;} D: List insert(List *L,elemtype x){ node d=new node(x); d.next=*L; return &d;}
- 2
线性表基本操作ListDelete(&L,i)的功能是删除L的第i个数据元素,且L的长度减1。其中i必须满足条件:1≤i≤ListLength(L),即删除位置可以是1到Length(L)中的任意一个。
- 3
在带头节点的单链表L
- 4
已知不带头结点的单链表L,下面用函数实现的在第一个元素前面插入值为x的元素结点的算法错误的是( ) A: void insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; q->next=p; L=&q;} B: List * insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; q->next=p; L=&q; return L;} C: void insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; p->next=q; L=&q;} D: List * insert(List *L,elemtype x){ ptr p=*L; node d=new node(x); ptr q=&d; q->next=p; return &q;}