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;}
举一反三
- 已知不带头结点的单链表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;}
- 已知不带头结点的单链表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;}
- 函数功能: 在带头结点单链表中删除一个值为x的结点,函数返回值为头指针。请选择正确的选项链式表定义如下:typedef int datatype;typedef struct link_node{ datatype info; struct link_node *next; }node;函数实现如下:node *dele(node *head,datatype x) { node *pre= (1) ,*q; q=head->next; while( (2) ) { pre=q; q=q->next; } if(q) { pre->next=q->next; //删除q free(p); } return head; }
- 中国大学MOOC: 下面程序执行后的输出结果是:#include <iostream>#include <cmath>using namespace std;struct NODE {int num; struct NODE *next;};int main(){struct NODE *p,*q,*r;p=new NODE;q=new NODE;r=new NODE;p->num=10; q->num=20; r->num=30;p->next=q;q->next=r;cout<<p->num+q->next->num<<endl; return 0;}
- 【课外练习·线性结构】在一个表头指针为L的单链表中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行 操作。 A: q->next=p->next; p=q; B: q->next=p->next; p->next=q; C: p->next=q->next; q=p; D: p->next=q->next; q->next=p;
内容
- 0
将一个由指针p所指向的结点插入到单链表L中由指针q所指向的结点后面,则需要执行的语句为() A: p->next = q->next; q->next = p; B: q->next = p; p->next = q->next; C: p->next = q->next; q = p; D: q->next = p->next; p->next = q;
- 1
有以下程序 #include struct NODE {int num; struct NODE *next; } main() {struct NODE *p,*q,*r; p=(struct NODE *)malloc(sizeof(struct NODE)); q=(struct NODE *)malloc(sizeof(struct NODE)); r=(struct NODE *)malloc(sizeof(struct NODE)); p->num=10;q->num=20;r->num=30; p->next=q;q->next=r; printf("%d ",p->num+q->next->num); } 程序运行后的输出结果是( )
- 2
(2)intBB(LinkList*L){LinkList*p,*q,*r;p=L->next;if(!p)return0;while(p->next){q=p;while(q->next){if(q->next->data!=p->data)q=q->next;else{r=q->next;q->next=r->next;free(r);}}p=p->next;}}Writethefunctionofthealgorithmabove.(5.0分)
- 3
假设以带头结点的单链表表示线性表,阅读下列算法fun,并回答问题: (1)设线性表为( a1, a2,a3, a4, a5, a6, a7 ),写出执行算法fun后的线性表; (2)简述算法fun的功能。 void fun(LinkList L) {//L为带头结点单链表的头指针 ListNode *p,*q; p =L; while (p&&p->next) { q= p->next; p->next=q->next; p=q->next; free(q); } }
- 4
在一个表头指针为L的单链表中,若要删除由指针q所指向结点的后继结点(若存在的话),则至少执行 操作。 A: p=q->next; p->next=q->next; B: p=q->next; q->next=p->next; C: p=q->next; q->next=p; D: q->next=q->next->next; q->next=q;