题目详情
当前位置:首页 > 职业培训考试
题目详情:
发布时间:2023-10-21 21:01:53

[简答题]设线性表A=(a1,a2,a3,…,an)以带头结点的单链表作为存储结构。编写一个函数,对A进行调整,使得当n为奇数时A=(a2,a4,…,an-1,a1,a3,…,an),当n为偶数时A=(a2,a4,…,an,a1,a3,…,an-1)。

更多"设线性表A=(a1,a2,a3,…,an)以带头结点的单链表作为存储结"的相关试题:

[简答题]设有带头结点的循环双链表表示的线性表L=(a1,a2,……,an-1,an)。设计在时
间和空间上都尽可能高效的算法,将L改造成L=(a1,a3,……,an,……a4,a2)。要求:
(1)给出算法的基本设计思想。
(2)根据设计思想,采用C或C++或JAVA语言描述算法,关键之处给出注释。
(3)说明你所设计算法的时间复杂度和空间复杂度。
[简答题]设有带头结点的循环双链表表示的线性表L=(a1,a2,…,an-1,an)。设计在时间和空间上都尽可能高效的算法,将L改造成L=(a1,a3,…,an,…,a4,a2)。要求:
给出算法的基本设计思想。
[简答题]设某带头结点的单链表的结点结构说明如下:
typedef struct nodel

int data;
struct nodel*next;
node;
试设计一个算法:void copy(node*head1, node*head2),将以head1为头指针的单链表复制到一个不带有头结点且以head2为头指针的单链表中。
[简答题]设有一个带头结点的循环单链表,其结点值均为正整数。试设计一个算法,反复找出单链表中结点值最小的结点,并输出之,然后将该结点从中删除,直到单链表空为止,最后再删除表头结点。
[填空题]以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。 struct link { char data; struct link*next;}; … struct link*p,*first; int c=0; p=first; while( 【19】 ) { c++; p= 【20】 ;}
[简答题]下列给定程序中,已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#include <stdlib .h >
#define N 8
typedef struct list
int data;
struct list * next;
SLIST;
void fun(SLIST * h, int x)
SLIST * p, * q, * s;
s=(SLIST *) malloc (sizeof
(SLIST));
/********** found********** /
s->data= (1) ;
q=h;
p=h->next;
while(p!=NULL && x >p->data)
/********** found********** /
q= (2) ;
p=p->next;

s->next=p;
/********** found********** /
q->next= (3) ;

SLIST * creatlist(int * a)
SLIST * h, * p, * q; int i;
h=p=(SLIST *)malloc (sizeof
(SLIST));
for(i=0; i<N; i++)
q=(SLIST *)malloc (sizeof
(SLIST));
q->data=a[i]; p->next=q; p=q;
[简答题]【说明】构造最优二叉查找树。
具有n个结点的有序序列a1, a2, …, an存在于数组元素a[1]、a[2], …, a[n]之中, a[0]未被使用。结点a1, a2, …, an-1, an的查找成功的概率p1, p2, …, pn-1, pn存在于数组元素 p[1]、p[2], …, p[n—1]、p[n]之中, p[0]未用。另外, 查找失败的概率q0, q1, …, qn-1, qn存在于数组元素q[0]、p[1], …, q[n-1]、q[n]之中。算法计算的序列ai+1, ai+2,…, aj-1, aj的最优二叉查找树Tij的代价Cij存在于数组元素c[i][j]之中, Tij的根结点的序号rij存在于r[i][j]之中, 它的权值存在于w[i][j]之中。为了便于内存的动态分配, 统统使用一维数组取代二维数组。
const float MAXNUM=99999. 0; //尽可能大的浮点数
template< (1)
void OPtimal_Binary_Search_Tree(float p[], float q[], Type a[], int n) {
float *C, *W;
c= (2) ;
w= (3) ;
int *r;
r=new int[(n+1)*(n+1)];
for(i=0; i<=n; i++)
{ c[i*(n+1)+i]=0. 0; // 即:c[i][i]=0.0, 用一维数组表示
w[i*(n+1)+i]=q[i
[单项选择]设rear是指向非空带头结点的循环单链表的尾指针,则删除起始结点的操作可表示为( )
A. s=rear;
B. rear=rear—>next;
C. rear=rear—>next—>next;
D. s=rear—>next—>next;
[填空题]函数main( )的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空
#include
struct node
int data;
struct node *next;int main(struct node *first) /*指针first为链表头指针*/
struct node *p; int m;
p=first->next; m=p->data; p=p->next;
for(; p!=NULL;p=______)
if(p->data<M)   M=P->data;
return m;

[简答题]

给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表, 并为各结点数据域赋0到m-1的值。
请改正函数Creatlink中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include
#include
typedef struct aa
{ int data;
struct aa *next;
} NODE;
NODE *Creatlink(int n, int m)
{ NODE *h=NULL, *p, *s;
int i;
p=(NODE )malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=1; i<=n; i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand( )%m; s->next=p->next;
p->next=s; p=p->next;
}
return p;
}
outlink(NODE *h)
{ NODE *p;
p=h->next;
printf("/n/nTHE LIST :/n/n HEAD ");
while(p)
{ printf("->%d ",p->data);
p=p->next;
}
printf("/n");
}
main( )
{ NODE *head;
head=Creatlink(8,22);
outlink(head);
}


[填空题]给定程序MODI1.C中函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0~(m-1)的值。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
文件MODI1.C内容如下:
#include<stdio.h>
#include<stdlib.h>
typedef struet aa
int data;
struct aa *next;
NODE;
NODE *Creatlink(int m)
NODE *h=NULL,*p,*s;
int i;
/**********found**********/
P=(NODE)malloc(sizeof(NODE));
h=p;
p->next=NULL;
for(i=0;i<m;i++)
s=(NODE *)malloc(sizeof(NODE));
s->data=i:
s->next=p->next;
p->next=s;
p=p->next;

/**********found**********/
return p;

void outlink(NODE *h)
NODE *p;
p=h->next;
printf("/n/nTHE LIST: /n/n HEAD");
while(p)
printf("->%d",p->data);
p=p->next;

printf("/n");

void main( )
NODE *head;
head=Creatlink(8);
outlink(head);

[填空题]函数main( )的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空。
#include<stdio.h>
struct node
int data;
struct node * next;

int main(struct node * first)/*指针first为链表头指针*/
struct node * p;int m;
p=first->next;m=p->data;p=p->next;
for(; p!=NULL;p=______)
if(p->data<m)m=p->data;
return m;

[填空题]已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有链结点数据域的和值,作为函数值返回。请在下划线内填入正确内容。
int data;struct link*next;
main( )
struct link*head;

sum(head);

sum( 【19】 );
struct link*p;int s=0;
p=head->next;
while(p)s+=p->data;p=p->next;
return(s);

我来回答:

购买搜题卡查看答案
[会员特权] 开通VIP, 查看 全部题目答案
[会员特权] 享免全部广告特权
推荐91天
¥36.8
¥80元
31天
¥20.8
¥40元
365天
¥88.8
¥188元
请选择支付方式
  • 微信支付
  • 支付宝支付
点击支付即表示同意并接受了《购买须知》
立即支付 系统将自动为您注册账号
请使用微信扫码支付

订单号:

请不要关闭本页面,支付完成后请点击【支付完成】按钮
恭喜您,购买搜题卡成功
重要提示:请拍照或截图保存账号密码!
我要搜题网官网:https://www.woyaosouti.com
我已记住账号密码