2019年考题已知h1和h2为两个单向链表的头指针,h1指向的链表(简称h1链表)不为空链表。add函数的功能是将h2指向的链表(简称h2链表)中的全部结点插入到h1链表中的第n个结点(n>0)之后。如果h2链表为空链表,函数直接返回h1链表的首结点的地址。如果h1链表中不存在第n个结点,则将h2链表中的全部结点添加到h1链表的末尾,函数返回h1链表的首结点的地址。struct node{ int data;struct node *next;};struct node *add(struct node *h1,struct node *h2, int n){ struct node *p1=h1, *q=h2,*p2;int i=0;if(h2==NULL) return h1;p2=h1;while(p1&&inext=q;else{ p2->next=q;while(q->next)(2) ;(3) =p1;}return h1;}
查看答案
2020考题以下函数Split的功能是:将一条带头结点(链表的第一个结点不存储数据,而是存储链表的表长,即结点个数)的无序链表分成两条带头结点的链表:一条链表上的数据均为偶数,另一条链表上的数据均为奇数。其中,值为奇数的结点保留在原链表上,值为偶数的结点移到另一条链表中,并将指向偶数链表的头指针返回。例如:原链表各结点上的数据依次为:8(表长), 20, 9, 3, 38, 27, 15, 24, 13分离后奇数结点的链表上的数据为:5(表长), 9, 3, 27, 15, 13偶数结点的链表上的数据为:3(表长), 24 ,38, 20链表结点的数据结构为:struct node{int data;node *next;};node * Split(node *&link){ node *p1=link, *p2=link->next ,*head;head=new node;head->data =0; head->next=0;while(p2){ if(p2->data%2==0){ p1->next= 【1】 ;link->data--;p2->next=head->next;【2】 ;head->data++;p2=p1->next;}else{ p1=p2;【3】 ;}}return 【4】 ;}
2021考题设已建立一个单向链表,指针head指向该链表的首结点。结点的数据结构如下:struct Node {int data;Node * next;};以下函数sort(Node *head)的功能是:将head所指向链表上各结点的数据按data值从小到大的顺序排序。算法提示:初始时,使p指向链表的首结点,从p之后的所有结点中找出data值最小的结点,让p1指向该结点,将p指向结点的data值与p1指向的结点的data值进行交换,再让p指向下一个结点,依此类推,直至p指向链表的最后一个结点为止。Node * sort(Node *head){ Node *p=head,*p1,*p2;if(p==NULL) return head;while(p->next !=NULL){ p1=p;p2=p->next ;while(p2!=NULL){ if( 【1】 )p1=p2;p2=p2->next ;}if(p!=p1){ int t;t=p->data ;p->data = 【2】 ;【3】 =t;}【10】 ;}return head;}
下列程序用于对输入的一批整数建立先进后出的链表,即先输入的放在表尾,后输入的放在表头,由表头至表尾输出的次序正好与输入的次序相反。输入的一批整数以9999作为结束,但链表中不包含此数。请完善程序。#include#define NULL 0using namespace std;struct node {int data;struct node *link;};int main( ){ struct node *p, *q;int m,n=1;q=NULL;cout<<"输入第"<>m;while(【1】){ p= 【2】;p->data=m;p->link= 【3】 ;q=p;cout<<"输入第"<>m;}n-=2;while( n>0 ){cout<<" 第"<data<<'\n';【4】 ;}return 0;}
分析程序的执行过程,给出最后的结果struct node{ char ni;struct node *next;};int main(){ node *head, *p;int n=48;head=NULL;do{ p=new node;p->ni=n%8+48;//48是字符'0'的ASCII码p->next=head;head=p;n=n/8;}while(n!=0);//提示:看到n%8 n/8想到什么没有?p=head;while(p!=NULL){ cout<ni;p=p->next;}return 0;}