文档库 最新最全的文档下载
当前位置:文档库 › 数据结构第一次作业

数据结构第一次作业

数据结构第一次作业
数据结构第一次作业

数据结构第一次作业1.源程序

#include

#include

#include

#include

#include

typedef struct

{

int no;

char name[100];

char Snumber[20];

char Pnumber[20];

char QQ[20];

char sex[50];

} student; //学生信息的类型

typedef student elemptype;

typedef struct node

{

elemptype data;

struct node *next;

}linklist; //定义单链表

linklist *head; //定义单链表头

int start() //控制linklist*creatlist()的结束

{

char n[10]="end";char str1[10];

printf("结束输入end,否则请按回车!\n\n");

printf("请输入:");gets(str1);printf("\n\n");

if(strcmp(n,str1)==0)

{getchar();return(0);}

else

{getchar();return(1);}

}

linklist*creatlist()

{

int a;

char ch[10];

elemptype x;

linklist *head,*r,*p;

p=(linklist*)malloc(sizeof(linklist));

head=p;

p->next=NULL;

r=p;

while(1)

{

printf("\n请输入学号:\n");

scanf("%d",&x.no);

printf("\n请输入姓名:\n");

scanf("%s",&https://www.wendangku.net/doc/bb6737184.html,);

getchar();

printf("\n请输入专业\n");

scanf("%s",&x.Snumber);

getchar();

printf("\n请输入电话号码\n");

scanf("%s",&x.Pnumber);

getchar();

printf("\n请输入QQ\n");

scanf("%s",&x.QQ);

getchar();

printf("\n请输入性别\n");

scanf("%s",&x.sex);

getchar();

p=(linklist*)malloc(sizeof(linklist));

p->data=x;

p->next=NULL;

r->next=p;

r=r->next;

a=start();

if(a==0)break;

system("pause");

system("cls");

}

return(head);

}

void insert(linklist*head,int x,elemptype y) {

linklist *q,*p,*r;

r=(linklist*)malloc(sizeof(linklist));

r->data=y;

if(head->next==NULL)

{

head->next=r;

r->next=NULL;

}

else

{

q=head;p=head->next;

while((p!=NULL)&&(p->data.no!=x))

{

q=p;p=p->next;

}

if(p!=NULL)

{

q->next=r;

r->next=p;

}

else

{

q->next=r;

r->next=NULL;

}

}

}

linklist *del(linklist*head,int i)

{

int j=0;

linklist *p,*s,*q;

p=head;

j=0;

while((p->next!=NULL)&&(j

{p=p->next; j++;}

if(p->next!=NULL)

{

q=p->next;

p->next=p->next->next;

free(q);

}

else

return NULL;

s=head;

return s;

}

linklist *locate(linklist *head,int k)

{

linklist *s;

s=head->next;

while(s!=NULL)

if(s->data.no!=k)

s=s->next;

else

break;

return s;

}

linklist *get(linklist *head,int i)

{

int j;

linklist *p;

p=head;j=0;

while((p->next!=NULL)&&(j

{

p=p->next;

j++;

}

if((i==j)&&(i!=0)) return p;

else

return NULL;

}

void outlin(linklist*h)

{

linklist*p;

p=h->next;

while(p!=NULL)

{

printf("%d,%s,%s,%s,%s,%s\n",p->data.no,p->https://www.wendangku.net/doc/bb6737184.html,,p->data.Snumber,p->data.Pnumber

,p->data.QQ,p->data.sex);

p=p->next;

}

printf("\n 输出结束\n");

}

void Menu_one()

//主菜单

{

printf("\n\n\n\n\n\n\n");

printf(" *************************************************\n");

printf(" 存储学生信息的线性表\n\n");

printf(" 1、用单链表来创建\n");

printf(" 2、用顺序表来创建\n");

printf(" 3、返回\n");

printf(" **************************************************\n");

printf("\n\n\n\t\t");

}

void Menu_two_2()

//次菜单

{

printf("\n\n\n\n\n\n\n");

printf(" *************************************************\n");

printf(" 用单链表存储学生信息\n\n");

printf(" 1、录入学生信息(只能录入一次!)\n");

printf(" 2、往线性表插入一个信息\n");

printf(" 3、在线性表中删除一个信息\n");

printf(" 4、按值检索\n");

printf(" 5、按序号检索\n");

printf(" 6、遍历线性表\n");

printf(" 7、退出\n");

printf(" **************************************************\n");

printf("\n\n\n\t\t");

}

void main_switch_2(char j)

{

int i;

linklist *k;

elemptype m,n;

int a,b;

switch(j){

case '1':{

printf("请添加学生信息\n");

head=creatlist();

outlin(head);

system("pause");

system("cls");

}break;

case '2':{

printf("\n在第几个信息之前插入?(输入学号)");

printf("\n请输入:");

scanf("%d",&m.no);

printf("\n\n\n准备插入的新信息\n\n\n");

printf("\n请输入学号:\n");

scanf("%d",&n.no);

printf("\n请输入姓名:\n");

scanf("%s",&https://www.wendangku.net/doc/bb6737184.html,);

printf("\n请输入专业\n");

scanf("%s",&n.Snumber);

printf("\n请输入电话号码\n");

scanf("%s",&n.Pnumber);

printf("\n请输入QQ\n");

scanf("%s",&n.QQ);

printf("\n请输入性别\n");

scanf("%s",&n.sex);

insert(head,m.no,n) ;

printf("\n\n新的学生信息表\n");

outlin(head);

system("pause");

system("cls");

}break;

case '3':{

outlin(head);

printf("\n请输入要删除第几个信息:\n");

scanf("%d",&a);

printf("\n新的信息表\n");

del(head,a);

outlin(head);

system("pause");

system("cls");

}break;

case '4':{

printf("\n请输入你要查找的学号:\n");

scanf("%d",&a);

k=locate(head,a);

printf("%d,%s,%s,%s,%s,%s\n",k->data.no,k->https://www.wendangku.net/doc/bb6737184.html,,k->data.Snumber,k->data.Pnumber ,k->data.QQ,k->data.sex);

system("pause");

system("cls");

}break;

case '5':{

printf("\n请输入你要查找的序号:\n");

scanf("%d",&a);

k=get(head,a);

printf("%d,%s,%s,%s,%s,%s\n",k->data.no,k->https://www.wendangku.net/doc/bb6737184.html,,k->data.Snumber,k->data.Pnumber ,k->data.QQ,k->data.sex);

system("pause");

system("cls");

}break;

case '6': {

printf("\n学生信息表\n\n");

outlin(head);

system("pause");

system("cls");

}break;

case '7': exit(0);

}

}

int main1()

{

char a[100];

head=(linklist*)malloc(sizeof(linklist));

head->next=NULL; //生成头结点

while(1)

{

Menu_two_2();

printf("\n\t请输入功能编号:");

gets(a);

system("pause");

system("cls");

if(a[1]!='\0')

{

printf("\n输入错误\n");

system("pause");

system("cls");

continue;

}

else

{

if(a[0]=='0')

break;

main_switch_2(a[0]);

}

}

return 0;

}

//-------以下为顺序表的函数--------------------------------------------------

using namespace std;

struct student1

{

int id; // 学号

char name[30]; // 姓名

char sex[2]; // 性别

char Pnumber[20];

char QQ[20];

float gread; // 成绩

};

typedef struct student1 DataType; // 指定struct student为DataType

struct SeqList

{

int MAX; // 顺序表中最大元素的个数

int count; // 存放线性表中元素的个数count <= MAXLENGTH DataType *element; // element[0], element[1], ..., element[n - 1]存放线性表中的元素DataType *m;

};

typedef struct SeqList *MySeqList;

// 初始化并创建空顺序表

// 功能:在顺序表中求某元素的下标,没有查找到,则返回-1

int locateSeqList(MySeqList mySeqList, int id)

{

for (int i = 0; i < mySeqList->count; ++i)

if (mySeqList->element[i].id == id) // 传入一个元素x,查找到后返回下标i return (i);

return (-1);

}

int updateSeqList(MySeqList mySeqList, int id) //学生信息修改

{

int iRc = locateSeqList(mySeqList, id);

if (iRc == -1)

{

printf("不存在指定下标!\n");

return (0);

}

cout<<"姓名:";

cin>>mySeqList->element[iRc].name;

cout<<"学号: ";

cin>>mySeqList->element[iRc].id;

cout<<"性别: ";

cin>>mySeqList->element[iRc].sex;

cout<<"电话: ";

cin>>mySeqList->element[iRc].Pnumber;

cout<<"QQ: ";

cin>>mySeqList->element[iRc].QQ;

cout<<"成绩: ";

cin>>mySeqList->element[iRc].gread;

return 1;

}

// 功能: 创建空顺序表

MySeqList initSeqList(int m)

{

MySeqList mySeqList = (MySeqList)malloc(sizeof(struct SeqList)); // 分配内存空间

if (mySeqList != NULL)

{

mySeqList->element = (DataType*)malloc(sizeof(DataType) * m); // 为里面的元素分配m 个DataType大小的内存空间,相当于初始化了一个长度为m的数组

if (mySeqList->element)

{

mySeqList->MAX = m; // 如果创建了元素,MAXLENGTH为最大元素的个数

mySeqList->count = 0; // 空表长度为0

return (mySeqList);

}

else

free(mySeqList); // 记得要手动释放空间,否则很容易产生内存泄漏

}

printf("内存空间不足,请关闭一些程序,然后再试!\n"); // 存储分配失败,提示空间不足return NULL;

}

// 功能: 判断线性表是否为空

int isEmptySeqList(MySeqList mySeqList)

{

return (mySeqList->count ==0);

}

// 功能:顺序表的pos下标后面插入,插入成功返回1,失败返回0

int insertNextSeqList(MySeqList mySeqList, int pos, DataType x)

{

if (pos < 0 || pos >= mySeqList->count)

{

printf("不存在指定下标!\n");

return (0);

}

++mySeqList->count;

if (mySeqList->count >= mySeqList->MAX)

{

--mySeqList->count;

printf("表产生了溢出!\n");

return (0);

}

for (int i = mySeqList->count - 1; i != pos + 1; --i)

{mySeqList->element[i] = mySeqList->element[i - 1]; // 同样地,把pos+1插入位置及之后的元素均后移一个位置

mySeqList->element[i] = x; // 插入元素x

return (1);

}

}

// 功能:顺序表的删除(根据下标删除)

int deleteSeqList(MySeqList mySeqList, int pos)

{

if (pos < 0 || pos >= mySeqList->count) // 不存在下标为pos的元素,注意下标范围是从0到count-1

{

printf("不存在指定下标!\n");

return (0);

}

for (int i = pos; i < mySeqList->count - 1; ++i)

mySeqList->element[i] = mySeqList->element[i + 1]; // 被删除元素之后的元素均前移一个位置

--mySeqList->count; // 元素个数减1

return (1);

}

// 功能:根据元素值删除,实现顺序表的删除

int deleteSeqListByValue(MySeqList mySeqList, int id)

{

int pos = locateSeqList(mySeqList, id);

if (pos == -1)

{

printf("不存在指定下标!\n");

return (0);

}

deleteSeqList(mySeqList, pos);

return (1);

}

// 输出线性表的元素值

void printSeqList(MySeqList &mySeqList)

{

for (int i = 0; i < mySeqList->count; ++i) // 输出线性表的元素值

{

cout<< "学号:" << mySeqList->element[i].id << ",姓名:" << mySeqList->element[i].name << ",性别:" << mySeqList->element[i].sex ;

cout<< ",电话:" << mySeqList->element[i].Pnumber<< ",QQ:" << mySeqList->element[i].QQ<<",成绩:" << mySeqList->element[i].gread;

cout<

}

cout << endl;

}

// 根据学生id,输出线性表的元素值

void printSeqListById(MySeqList &mySeqList,int id)

{

for (int i = 0; i < mySeqList->count; ++i) // 输出线性表的元素值

{

if (id == mySeqList->element[i].id)

{

cout<< "学号:" << mySeqList->element[i].id << ",姓名:" << mySeqList->element[i].name << ",性别:" << mySeqList->element[i].sex ;

cout<< ",电话:" << mySeqList->element[i].Pnumber<< ",QQ:" << mySeqList->element[i].QQ<<",语文:" << mySeqList->element[i].gread;

cout<

break;

}

}

}

int main2()

{

MySeqList mySeqList = initSeqList(20); // 初始化一个长20的表

L:

system("cls");

printf("\n\n\n\n\n\n\n");

printf(" *************************************************\n");

printf(" 用顺序表存储学生信息\n\n");

printf(" 1、录入学生信息\n");

printf(" 2、查找学生信息\n");

printf(" 3、删除学生信息\n");

printf(" 4、修改学生信息\n");

printf(" 5、遍历学生信息\n");

printf(" 6、退出学生系统\n");

printf(" **************************************************\n");

printf("\n\n\n\t\t"); int i;

cout<<"请选择一个操作(1-5):";

cin>>i;

system("pause");

system("cls");

if (i == 1)

{

mySeqList->count = 1;

int iRc = 0;

while(true&&mySeqList->count<20)

cout<

cout<<"姓名:";

cin>>mySeqList->element[iRc].name;

if (strcmp(mySeqList->element[iRc].name,"*") == 0)

{

mySeqList->count--;

goto L;

}

cout<<"学号: ";

cin>>mySeqList->element[iRc].id;

cout<<"性别: ";

cin>>mySeqList->element[iRc].sex;

cout<<"电话: ";

cin>>mySeqList->element[iRc].Pnumber;

cout<<"QQ: ";

cin>>mySeqList->element[iRc].QQ;

cout<<"成绩: ";

cin>>mySeqList->element[iRc].gread;

cout << "成功添加学生成绩信息成绩。"<

printSeqList(mySeqList);

system("pause");

system("cls");

mySeqList->count++;

iRc++;

}

}

else if (i == 2)

{

L4:

cout<<"请输入要查找的学生学号:"<

int sid;

cin>>sid;

if (locateSeqList(mySeqList,sid) != -1)

{

cout<<"成功查询学号为"<

printSeqListById(mySeqList,sid);

}

else

{

cout<<"查询学生成绩错误,可能不存在学号为"<

int iopselect;

cout<

cin>>iopselect;

if (iopselect == 0)

goto L ;

else

goto L4;

}

else if (i == 3)

{

L1:

cout<<"请输入要删除的学生学号:"<

int stu_id;

cin>>stu_id;

if (deleteSeqListByValue(mySeqList,stu_id) == 1)

cout<<"成功删除学生成绩。"<

else

cout<<"删除学生成绩出错。"<

printSeqList(mySeqList);

int iop;

cout<

cin>>iop;

if (iop == 0)

goto L ;

else

goto L1;

}

else if (i == 4)

{

L3:

cout<<"请输入要修改的学生学号:"<

int id;

cin>>id;

if(updateSeqList(mySeqList,id) ==1)

cout << "成功修改学生成绩信息成绩。"<

else

cout << "修改学生成绩信息成绩出错。"<

printSeqList(mySeqList);

int iselect;

cout<

cin>>iselect;

if (iselect == 0)

goto L ;

else

goto L3;

}

else if (i == 5)

{

system("cls");

printSeqList(mySeqList);

system("pause");

system("cls");

goto L ;

}

else if (i == 6)

{

system("cls");

cout<<"您已经出本系统,欢迎下次再使用."<

}

return 0;

}

int main()

{

int q;

Menu_one();

printf("请输入序号:");

scanf("%d",&q);

getchar();

system("cls");

if(q==1)

main1();

else if(q==2)

main2();

else

exit(0);

}

2.结果截图

单链表:

1录入信息

2 插入信息

3 删除信息

4 按值检索

6 按序号检索

顺序表:

1 录入信息

2 查找信息

3 删除信息

4 修改信息

小组成员任务分配

单链表: 湛嘉琪,王小雨

顺序表: 刘宇霏,王硕

最终合并:湛嘉琪WORD文档:王小雨

遇到的难题

1、// 功能:顺序表的pos下标后面插入,插入成功返回1,失败返回0

int insertNextSeqList(MySeqList mySeqList, int pos, DataType x)

{

if (pos < 0 || pos >= mySeqList->count)

{

printf("不存在指定下标!\n");

return (0);

}

++mySeqList->count;

if (mySeqList->count >= mySeqList->MAX)

{

--mySeqList->count;

printf("表产生了溢出!\n");

return (0);

}

for (int i = mySeqList->count - 1; i != pos + 1; --i)

{mySeqList->element[i] = mySeqList->element[i - 1]; // 同样地,把pos+1插入位置及之后的元素均后移一个位置

mySeqList->element[i] = x; // 插入元素x

return (1);

}

}

else if (i == 7)

{

int num;

DataType m;

mySeqList->m = (DataType*)malloc(sizeof(DataType) );

system("cls");

cout<<"请输入要添加的学生信息:"<

cout<<"姓名: ";

cin>>mySeqList->https://www.wendangku.net/doc/bb6737184.html,;

cout<<"学号: ";

cin>>mySeqList->m.id;

cout<<"性别: ";

cin>>mySeqList->m.sex;

cout<<"电话: ";

cin>>mySeqList->m.Pnumber;

cout<<"QQ: ";

结构设计原理第一次作业答案

首页-我的作业列表-《结构设计原理》第一次作业答案 欢迎你,刘晓星(DI4131R6009 '你的得分:100.0 完成日期:2014年07月02日10点04分 一、单项选择题。本大题共25个小题,每小题2.0 分,共50.0分。在每小题给出的选项中,只有一 项是符合题目要求的。 若用S表示结构或构件截面上的荷载效应,用R表示结构或构件截面的抗力,结构或构件截面处于极限状态时,对应于()式。 (B ) R> S R= S R v S R WS 对所有钢筋混凝土结构构件都应进行()。 (D ) 抗裂度验算 裂缝宽度验算 变形验算 承载能力计算混凝土各项强度指标的基本代表值是()。 (B ) 轴心抗压强度标准值立方体抗压强度标准值 轴心抗压强度平均值立方体抗压强度平均值 工程结构的可靠指标3与失效概率P f之间存在下列()关系。 (D ) 3愈大,P f愈大 3与P f呈反比关系 3与P f呈正比关系 3与P f存在一一对应关系,3 愈大,P f愈小

(B ) a b c d 热轧钢筋冷拉后,()。 (A ) 可提高抗拉强度和抗压强度只能提高抗拉强度 可提高塑性,强度提高不多 只能提高抗压强度 无明显流幅钢筋的强度设计值是按()确定的。 (C ) 材料强度标准值x材料分布系数 材料强度标准值/材料分项系数 0.85 x材料强度标准值/材料分项系数 材料强度标准值/ (0.85 x材料分项系数) 钢筋混凝土梁的受拉区边缘混凝土达到下述哪一种情况时,开始出现裂缝?( ) (A ) 达到混凝土实际的轴心抗拉强度 达到混凝土轴心抗拉强度标准值 达到混凝土轴心抗拉强度设计值 达到混凝土弯曲受拉时的极限拉应变值 (D ) a b c d

数据结构习题及参考答案

习题1 一、单项选择题 A1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 C2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 D3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 B4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) CA5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

数据结构第3次作业

1. 填空题 (1) 顺序栈s的数据存储在数组element中,则栈满的条件是____________,栈空的条件是。 (2) 顺序栈s进行出栈操作后,要执行的语句是top____。s进行进栈操作前,要执行的语句是top______运算。 (3) 元素进入队列的一端是____________;队列出队的一端是____________。 (4)顺序队列q满的条件是,顺序队列q空的条件 是。 (5) 空串的长度等于,非空串的长度等于。 2. 选择题 (1) 串是一种特殊的线性表,其特征体现在_____。 A. 可以顺序存储 B. 数据元素是一个字符 C. 可以链接存储 D. 数据元素可以是多个字符 (2) 栈是限定在__________处进行插入或删除操作的线性表。 A. 端点 B. 栈底 C. 栈顶 D. 中间 (3) 在栈顶一端可进行的全部操作是___________。 A. 插入 B.删除 C. 插入和删除 D. 进栈 (4) 4个元素按A、B、C、D顺序连续进S栈,进行x=pop()运算后,x的值是___________, 栈顶元素的值是. A. A B. B C. C D. D (5) 栈的特点是__________。 A. 先进先出 B. 后进先出 C. 后进后出 D. 不进不出 (6) 顺序栈存储空间的实现使用___________。 A. 链表 B. 数组 C.循环链表 D. 变量 (7) 一个顺序栈一旦说明,其占用空间的大小___________。 A. 已固定 B. 可以改变 C. 不能固定 D. 动态变化 (8) 栈与一般线性表的区别主要在___________方面。 A. 元素个数 B. 元素类型 C. 逻辑结构 D. 插入、删除元素的位置 (9) 栈s经过下列运算后s.get()的值是___________, s.isEmpty( )的值是___________。 s.push(a);s.push(b);s.pop(); A. a B. b C. 1 D. 2

结构设计原理(钢结构)作业

本学期的第4次作业 二、主观题(共13道小题) 10. 极限状态法按预定功能划分为哪几种极限状态? 答:极限状态法按预定功能划分为承载能力极限状态和正常使用极限状态。 11. 钢管混凝土中,为什么混凝土的强度能提高? 答:因为在较高应力状态下,混凝土的泊松比大于钢材泊松比,这样钢管对其内的混凝土形成横向“套箍作用”。 12. 为什么以钢材的屈服强度作为静力强度设计指标? 答:(1)有强化阶段作为安全储备; (2)不致产生工程中不允许的过大变形; (3)实测值较为可靠; (4)可以近似沿用虎克定律。 13. 为什么伸长率试验时要规定标距长度? 答:因为不同标距的试件测出的伸长率大小不同。 14. 防止脆性断裂的措施有哪些? 答:(1)采用性能较好的钢材; (2)减少应力集中程度; (3)采用较薄厚度的钢板组成构件。 15. 什么叫钢材的硬化? 答:钢材因加工等原因使其强度提高,塑性降低的现象。

16. 应力集中如何影响钢材的性能? 答:应力集中会导致三向同号受力,与单向受力相比,三向同好受力更容易发生脆性断裂。 17. 什么叫钢材的塑性破坏? 答:钢材应力达到或超过其屈服强度,破坏前有明显变形给以预兆,破坏不突然。 18. 影响钢材疲劳破坏的主要因素有哪些? 答:(1)钢材本身的质量; (2)应力集中程度; (3)应力比; (4)应力循环次数; (5)应力幅。 19. 钢板厚度如何影响钢材脆性断裂? 答:钢板厚度越大,因应力集中引起(三向同号受力中)板厚方向的应力就越大,主剪应力就越小,正应力就越有可能起控制作用,所以钢板越厚,越有可能发生度如何影响钢脆性断裂。 20. 各级焊缝的实际强度与母材强度的相对大小关系如何?规范规定如何取值? 答:各级焊缝的抗压强度没有明显差异,可抗拉、抗剪就不同了。试验表明一、二级焊缝的实际强度高于母材强度,规范取母材强度;三级焊缝的拉、剪强度低于母材强度,规范专门规定了其取值。 21.

数据结构作业题及参考答案

东北农业大学网络教育学院 数据结构作业题(一) 一、选择题(每题2分,共20分) 1.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。 A、O(n) B、O (n/2) C、O (1) D、O (n2) 2.带头结点的单链表first为空的判定条件是()。 A、first == NULL; B、first->link == NULL; C、first->link == first; D、first != NULL; 3.在一棵树中,()没有前驱结点。 A、分支结点 B、叶结点 C、树根结点 D、空结点 4.在有向图中每个顶点的度等于该顶点的()。 A、入度 B、出度 C、入度与出度之和 D、入度与出度之差 5.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()的值除以9。 A、20 B、18 C、25 D、22 6.下列程序段的时间复杂度为()。 s=0; for(i=1;i

2017年上半年数据结构(C++)第一次作业

2014年上半年数据结构(C++)第一次作业 一.单项选择题(20分) 1.已知一棵二叉树的前序遍历序列为ABCDEFG,则其中序遍历可能是____b____。 a、CABDEFG b、ABCDEFG c、DACEFBG d、ADCFEGB 2.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则采用__b______存储方式最节 省时间(假设链表仅设有一个first指针一个)。 a. 单链表 b. 带头结点的双循环链表 c. 单循环链表 d. 双链表 3.有6个元素6,5,4,3,2,1顺序入栈,则所得到的输出序列不可能是___c____。 a. 5 4 3 6 1 2 b. 4 5 3 1 2 6 c. 3 4 6 5 2 1 d. 2 3 4 1 5 6 4.链表不具有的特点是__d___。 a.插入,删除不需要移动元素 b.所需空间与线性长度成正比 c.不必事先估计存储空间 d.可随机访问任一元素 5.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂 度为_____c____。(1≤i≤n+1) a、O(0) b、O(1) c、O(n) d、O(n2) 6.对于一个头指针为head的带头结点的单链表,该表为空表的条件是__a____为真值; a. head->next==NULL; b. head==NULL; c. head->next==head; d. head!=NULL; 7.用数组A[0..N-1]存放一个循环队列,一元素出队时,其队头指针front的修改方法是 ___a____: a. front = (front + 1) mod N; b. front = (front - 2)mod N; c. front = front + 1; d. front = front – 2; 8.若用Head()和Tail()分别表示取广义表的表头和表尾,广义表A=(1,2,(3,4),(5,(6,7))),则 Head(Tail(Head(Tail(Tail(A))))) b 。 a. 1 b. 4 c. () d. (4) 9.设关于串的叙述中,哪一个是不正确的?___b_____ a. 串是字符的有限序列 b. 空串是由空格构成的串 c. 模式匹配是串的一种重要运算 d. 串既可以采用顺序存储,也可以采用链式存储 10.链下列排序算法中时间复杂度不受数据初始状态影响,恒为O(n2)的是____c____。 a.堆排序 b.起泡排序 c.直接选择排序 d.快速排序 二.填空作图题(共56分): 1.设 n是偶数,且有程序段: for(i=1; i<=n; i++) { if(2*i <= n) { for(j = 2* i; j<=n;j++)

数据结构第六章一二次作业

上机题 (1)编写完整程序,用先序遍历法建立二叉树的二叉链 表存储结构。输出该二叉树的先、中、后序遍历结 点访问次序以及层次遍历结点访问次序。(建议结 点数据域类型为char) // erchashu.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include typedef struct node { char data; struct node *lchild, *rchild; }*BiT, BiTNode; BiT crtBT() { char ch; BiT bt; ch=getchar(); if(ch=='#') return NULL; bt=new BiTNode(); bt->data=ch; bt->lchild=crtBT(); bt->rchild=crtBT(); return bt;

} void preorder(BiT bt) { if(bt) { printf("%c",bt->data); preorder(bt->lchild); preorder(bt->rchild); } //printf("\n"); } void midorder(BiT bt) { if(bt) { midorder(bt->lchild); printf("%c",bt->data); midorder(bt->rchild); } //printf("\n"); } void lasorder(BiT bt) { if(bt) { lasorder(bt->lchild); lasorder(bt->rchild); printf("%c",bt->data); } //printf("\n"); } int main(int argc, char* argv[]) { BiT bt; bt=crtBT(); preorder(bt); printf("\n"); midorder(bt); printf("\n"); lasorder(bt); printf("\n"); return 0; } (2)从键盘输入n个数据建立n元完全二叉树顺序存储结

《数据结构》填空作业题(答案)

《数据结构》填空作业题答案 第 1 章绪论(已校对无误) 1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。 2.程序包括两个内容:数据结构和算法。 3.数据结构的形式定义为:数据结构是一个二元组:Data Structure =( D, S)。 4.数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。 5.数据的逻辑结构可以分类为线性结构和非线性结构两大类。 6.在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。 7.在树形结构中,数据元素之间存在一对多的关系。 8.数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。 9.数据的逻辑结构包括线性结构、树形结构和图形结构 3 种类型,树型结构和有向 图结构合称为非线性结构。 10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑 关系由存储单元位置的邻接关系来体现。 11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑 关系由附加的指针域来体现。 12.数据的存储结构可用 4 种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。 13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。 14.数据结构在物理上可分为顺序存储结构和链式存储结构。 15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数 据的实现方法。 16.数据元素可由若干个数据项组成。 17.算法分析的两个主要方面是时间复杂度和空间复杂度。 18.一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂 度是用该算法在运行过程中所占用的存储空间的大小来度量的。 19.算法具有如下特点:有穷性、确定性、可行性、输入、输出。 20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切 的定义,并在有穷时间内计算出结果。 21. 下面程序段的时间复杂度为㏒ 3n 。 1

华工平时作业数据结构第一次作业

1判断题 (对)1. 数据的逻辑结构与数据元素本身的内容和形式无关。 (错)2. 线性表的逻辑顺序与物理顺序总是一致的。 (对)3. 若有一个叶子结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点。 (错)4. 对于同一组待输入的关键码集合,虽然各关键码的输入次序不同,但得到的二叉搜索树都是相同的。 (对)5. 最优二叉搜索树的任何子树都是最优二叉搜索树。 (对)6. 在二叉搜索树上插入新结点时,不必移动其它结点,仅需改动某个结点的指针,使它由空变为非空即可。 (对)7. 有n(n≥1)个顶点的有向强连通图最少有n条边。 (错)8. 连通分量是无向图中的极小连通子图。 (错)9. 二叉树中任何一个结点的度都是2。 (错)10. 单链表从任何一个结点出发,都能访问到所有结点。 二、单选题 1 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动( B )个元素。 A.8 B. 63.5 C. 63 D. 7 2 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,则A[3][3]在( A )位置,(10)表明用10进数表示。 A.692(10) B. 626(10) C. 709(10) D. 724(10) 3 N个顶点的连通图至少有( A )条边。 A.N-1 B. N C. N+1 D. 0 4 下面程序的时间复杂度为( C )。 for(int i=0; ilink=p->link; p->link =s; B. q->link=s; s->link =p; C. p->link=s->link; s->link =q; D. p->link=s; s->link =q; 6栈的插入和删除操作在( A )进行。 A.栈顶 B. 栈底 C. 任意位置 D. 指定位置 7 若让元素1,2,3依次进栈,则出栈次序不可能出现哪种情况( C )。 A.3,2,1 B. 2,1,3 C. 3,1,2 D. 1,3,2 8 广义表A(a),则表尾为( C )。 A.a B. (()) C. 空表 D. (a)

数据结构第1章作业

第1章绪论 一、选择题 1. 算法的计算量的大小称为计算的()。 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于() A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(1),它必须具备(2)这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 4.一个算法应该是()。 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 5. 下面关于算法说法错误的是() A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是() (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为()两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 8.以下与数据的存储结构无关的术语是()。 A.循环队列 B. 链表 C. 哈希表 D. 栈 9.以下数据结构中,哪一个是线性结构()? A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 10.以下那一个术语与数据的存储结构无关?() A.栈 B. 哈希表 C. 线索树 D. 双向链表 11.在下面的程序段中,对x的赋值语句的频度为() FOR i:=1 TO n DO FOR j:=1 TO n DO x:=x+1; A. O(2n) B.O(n) C.O(n2) D.O(log2n) 12.程序段 FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF A[j]>A[j+1] THEN A[j]与A[j+1]对换;

结构设计原理第十二章作业

结构设计原理第十二章作业 1、何谓预应力混凝土?为什么要对构件施加预应力? 答:在工程结构构件承受荷载之前,对受拉模块中的钢筋,施加预应力,提高构件的强度,推迟裂缝出现的时间,增加构件的耐久性。对于机械结构看,其含义为预先使其产生应力,其好处是可以提高构造本身刚性,减少震动和弹性变形,这样做可以明显改善受拉模块的弹性强度,使其原本的抗性更强。在结构承受外荷载之前,预先对其在外荷载作用下的受拉区施加压应力,以改善结构使用的性能的结构型式称之为预应力结构。 2、什么是预应力度?《公路桥规》对预应力混凝土构件如何分类? 答:预应力度:由预加应力大小确定的消压弯矩与外荷载产生的弯矩的比值。 《公路桥规》分三类:○1全预应力混凝土构件—在作用(荷载)短期效应组合下控制的正截面受拉边缘不允许出现拉应力(不得消压)○2部分预应力混凝土构件—在作用(荷载)短期效应组合下控制的正截面受拉边缘出现拉应力或出现不超过规定宽度的裂缝○3钢筋混凝土构件—不预加应力的混凝土构件 3、预应力混凝土的预加力施工方法有哪些? 答;机械法(先张法、后张法)、电热法、自张法 4、什么是先张法?先张法构件是如如何实现预应力筋的锚固? 答:(1)先张法是在浇筑混凝土前张拉预应力筋,并将张拉的预应力筋临时锚固在台座或钢模上,然后浇筑混凝土,待混凝土养护达到不低于混凝土设计强度值的75%,保证预应力筋与混凝土有足够的粘结时,放松预应力筋,借助于混凝土与预应力筋的粘结,对混凝土施加预应力的施工工艺。 (2)采用握裹锚固 5、什么是后张法?后张法构件是如何实现预应力筋的锚固的? 答:(1)后张法是先浇筑构件混凝土待混凝土结硬后再张拉预应力钢筋并锚固的方法。 (2)利用锚具锚固 6.公路桥梁中常用的制孔器有哪些? 答:橡胶管制孔器、金属伸缩管制孔器、钢管制孔器 7、预应力混凝土结构对所使用的混凝土有何要求? 答:(1)高强度。预应力混凝土必须具有较高的抗压强度,才能建立起较高的预压应力,并可减小构件截面尺寸,减轻结构自重,节约材料。对于先张法构件,高强混凝土具有较高的粘结强度。 (2)收缩徐变小。这样可减小预应力损失。

数据结构习题及参考答案 .

习题1 一、单项选择题 1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 3.树形结构是数据元素之间存在一种()。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 4.设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; A.O(1) B.O(2n) C.O(n) D.O(3n) 5.算法分析的目的是(1),算法分析的两个主要方面是(2)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点()。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对

数据结构第一次作业答案.

假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递增次序排列的单链表。 【解答】算法的基本设计思想:因为两链表已按元素值递增次序排列,将其合并是,均从第一个结点起进行比较,将小的结点链入链表中,同时后移链表工作指针。该问题要求结果链表按元素值递减次序排列,故新链表的建立,应该采用头插法(也就是书本上讲的那种从链表中插入元素值的方法。比较结束后,可能会有一个链非空,此时用头插法将剩下的结点依次插入新链表中即可。算法实现如下: void MergeList(ListList &La,LinkList &Lb { LinkList r,pa=La->next,pb=Lb->next; //pa和pb分别是链表La 和 //Lb的工作指针 La->next=NULL; while(pa&&pb //当两链表均不为空时 if(pa->data<=pb->data { r=pa->next; //将pa的后继结点暂存于r pa->next=La->next; La->next=pa; //将pa结点链于结果表中,同时逆//置(头插法 pa=r; //恢复pa为当前待比较结点 } else { r=pb->next; //将pb的后继结点暂存于r pb->next=La->next;

La->next=pb; //将pb结点链于结果表中,同时逆置 pb=r; } If(pa pb=pa; //通常情况下会剩下一个链表非空,处理剩//下的部分 while(pb{ r=pb->next; pb->next=La->next; La->next=pb; pb=r; } free(Lb; } 选择题:1、D 2、B 1、栈的特点是先进后出,由于进栈和出栈操作是可以穿插着进行的。当第i个元素第一个出栈时,则i之前的元素可以依次排在i之后出栈,但剩余的元素可以在此时进栈并且也会排在i之前的元素出栈,所以第就j个出栈的元素是不确定的。 2、后缀表达式中,每一个计算符号均位于它两个操作数的直接后面,按照这样的方式逐步根据计算的优先级将每个计算式进行变换即可 得到后缀表达式。 那道进制转换的题,上传的课件中有,自己参考去

中南大学混凝土结构设计原理作业参考答案

《混凝土结构设计原理》作业参考答案 作业一 一、填空题: 1. 1.05 0.95 接触摩阻力 2.化学胶着力 摩擦力 机械咬合力 3.最小配筋率 4.斜拉破坏 剪压破坏 斜压破坏 脆性破坏 5.少筋破坏 适筋破坏 超筋破坏 适筋破坏 脆性破坏 二、名词解释: 1.剪跨比:是一个无量纲常数,用 m =M /(Qh 0)来表示,此处M 和Q 分别为剪弯区段中某个竖直截面的弯矩和剪力,h 0为截面有效高度。 2.《规范》规定的混凝土立方体抗压强度是:边长为150mm 立方体试件、在20°C ±3°C 的温度、相对湿度在95%以上的潮湿空气中、养护28天、按标准制作方法和试验方法测得的具有95%保证率的混凝土抗压强度。 3.预应力筋张拉后,由于混凝土和钢材的性质以及制作方法上原因,预应力筋中预应力会从控制应力开始逐步减少,并经过相当长时间最终稳定下来,这种应力的降低称为预应力损失。 4.当偏心受压构件的相对偏心距00/e h 较小,或受拉侧纵向钢筋配置较多时,受拉侧的钢筋应力较小,没有达到屈服或承受压力,截面是由于受压区混凝土首先压碎而达到破坏。 5.混凝土在长期不变的荷载作用下,混凝土的应变随时间的增加二持续增长的现象。 三、简单题: 1.钢筋混凝土结构中的钢筋和混凝土两种不同的材料为什么能共同工作? 钢筋与混凝土之所以能共同工作,主要是由于:两者间有良好的粘结力、相近的温度线膨胀系数和混凝土对钢筋的保护作用。 2.什么是结构的承载能力极限状态?它的表现特征包括哪些方面? 承载能力极限状态:是指结构或结构构件达到最大承载力或不适于极限承载的变形或变位的状态。四个表现特征: (1)整个结构或结构的一部分作为刚体失去平衡,如滑动、倾覆等; (2)结构构件或连接处因超过材料强度而破坏(包括疲劳破坏),或因过度的塑性变形而不能继续承载; (3)结构转变成机动体系;(4)结构或结构构件丧失稳定,如柱的压屈失稳等。 3.预应力混凝土结构中传递和保持预应力的主要方式有哪些? 预应力混凝土结构,后张法是靠工作锚具来传递和保持预加应力的;先张法则是靠粘结力来传递并保持预加应力的。 4.偏心受压构件的破坏特征如何?主要取决于什么因素? 破坏特征:大偏心受压构件的破坏从受拉钢筋开始,受拉钢筋先达到屈服强 度,然后受压区混凝土被压坏;小偏心受压构件的破坏从受压区开始,受压 区边缘混凝土先达到极限压应变而破坏,受拉钢筋一般达不到屈服强度。 主要影响因素:相对偏心距大小和配筋率。 四、计算题:

数据结构作业(附答案)

1.数据的最小单位是( A )。 (A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量 2.下面关于线性表的叙述错误的是(D)。 (A) 线性表采用顺序存储必须占用一片连续的存储空间 (B) 线性表采用链式存储不必占用一片连续的存储空间 (C) 线性表采用链式存储便于插入和删除操作的实现 (D) 线性表采用顺序存储便于插入和删除操作的实现 3.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为(C)。 (A) R-F (B) F-R (C) (R-F+M)%M (D) (F-R+M)%M 4.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为(A)。 (A) BADC(B)BCDA (C) CDAB (D) CBDA 5.设某棵二叉树中有2000个结点,则该二叉树的最小高度为(C)。 (A) 9 (B) 10 (C) 11(D) 12 6.下面程序的时间复杂为(B) for(i=1,s=0;i<=n;i++){t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;} (A) O(n) (B) O(n2)(C) O(n3) (D) O(n4) 7.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为(C)。 (A) q=p->next;p->data=q->data;p->next=q->next;free(q); (B) q=p->next;q->data=p->data;p->next=q->next;free(q); (C) q=p->next;p->next=q->next;free(q); (D) q=p->next;p->data=q->data;free(q); 8.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为(C )。 (A)O(n) (B) O(nlog2n) (C) O(1)(D) O(n2) 9.设一棵二叉树的深度为k,则该二叉树中最多有(D )个结点。 (A) 2k-1 (B) 2k(C) 2k-1(D) 2k-1 10.设用链表作为栈的存储结构则退栈操作( B )。 (A) 必须判别栈是否为满(B) 必须判别栈是否为空 (C) 判别栈元素的类型(D) 对栈不作任何判别 11.函数substr(“DATASTRUCTURE”,5,9)的返回值为(A )。 (A) “STRUCTURE”(B) “DATA” (C) “ASTRUCTUR”(D) “DATASTRUCTURE” 12.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是( C)。 (A) N0=N1+1 (B) N0=N l+N2(C) N0=N2+1(D) N0=2N1+l 13.设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(B )。 (A) 空或只有一个结点(B) 高度等于其结点数 (C) 任一结点无左孩子(D) 任一结点无右孩子 14. 深度为k的完全二叉树中最少有( B )个结点。 (A) 2k-1-1 (B) 2k-1(C) 2k-1+1(D) 2k-1

数据结构形成性考核册第1次作业参考答案

《数据结构》形成性考核册第1次作业参考答案第一章绪论 一、填空题 1、数据操作 2、集合结构线性结构 树型结构图形结构 3、引用类型 4、1:1 1:n n:m 5、不对 6、多个 7、O(m*n) 8、时间复杂度 空间复杂度 9、顺序链接索引散列 10、O(n2) 11、O(n) 12、O(n)O(m*n) 二、选择题1~8:DBABADDD 三、应用题 (1)功能:判断n是否是一个素数,若是则返回数值1,否则返回0。时间复杂度:O(n)。 (2)功能:计算S=1!+2!+…+n!的值。时间复杂度:O(n)。 (3)功能:计算S=1!+2!+…+n!的值。时间复杂度:O(n2)。 (4)求出满足不等式1+2+…+i≥n的最小i值。O(n)。 第二章线性表 四、填空题 1、A[P-1] 2、108 3、前驱后继 4、最后一个表头 5、p->next=q->next q->next=p 6、HL->next=NULL HL->next=HL 7、P->next 8、Q->next 9、P->next s 10、从前向后前移n-i 11、O(1)O(n) 12、(n+1)/2 13、O(n)O(1) 14、A[P].next 15、a[j].next=a[i].next a[i].next=j 16、数据值指针 五、选择题1~5:BDDBC 六、应用题 1、(1)、(79,62,34,57,26,48)(2)、(26,34,48,57,62,79)(3)、(48,56,57,62,79,34)(4)、(56,57,79,34) (5)、(26,34,39,48,57,62) 2、(1)将类型为List的线性表L中第i个元素移至表尾位置的算法,L中的元素类型为ElemType,假定不需要对i的值进行有效性检查。 void move (List& L, int i) { ElemType x=L.list[ i-1]; for(int j=i; j

数据结构习题与答案

第 1 章绪论 课后习题讲解 1. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

数据结构作业标准答案

第一章 单选题 1、下列关于算法的基本特征,说法不正确的是()。能行性是算法中的每一个步骤必须能够实现且能达到预期的目的。算法的确定性是指算法中的每一个步骤必须是有明确的定义,不允许模棱两可。 算法的有穷性是指算法必须能在有限的时间内做完。算法与提供情报无关。 [D] 教师批改:D 2、算法的时间复杂度取决于()。问题的规模待处理的数据的初态 问题的难度 A 和B [D] 教师批改:D 3、下列选项中,不是算法基本特征的是()。可行性有穷性 确定性高效率 [D] 教师批改:D 4、通常一个好的算法应达到的目标中,不包括()。正确性可读性 技巧性健壮性 [C] 教师批改:C 5、在一般的计算机系统中,基本的运算和操作不包括()。语法处理算术运算 关系运算数据传输 [A] 教师批改:A 6、工程上常用的分治法是()。列举法归纳法 减半递推技术回溯法 [C] 教师批改:C 多选题 7、算法设计的要求包括()。 正确性可读性 健壮性唯一性 [ABC] 教师批改:A,B,C 8、算法的时间复杂度应该与()无关。 所使用的计算机程序设计语言 基本运算的执行次数程序编制者 [ABD] 教师批改:A,B,D 9、下列关于算法的描述中,不正确的有()。 算法即是计算机程序算法是解决问题的计算方法 算法是排序方法算法是解决问题的有限运算序列 [ABC] 教师批改:A,B,C 填空题 16、所谓算法是指()。 教师批改:解题方案的准确而完整的描述 17、算法的基本特征有()、()、()和() 教师批改:能行性、确定性、有穷性和拥有足够的情报。

18、一个算法通常由两种基本要素组成,它们是()和()。 教师批改:算法中对数据的运算和操作。 算法的控制结构。 19、工程上常用的几种算法设计方法有列举法、()、()、()、()和回溯法。 教师批改:归纳法、递推、递归、减半递推技术。 20、算法的复杂度主要包括()复杂度和()复杂度。 教师批改:时间、空间 综合题 21、设给定3个整数a,b,c,试写出寻找这3个整数的中数的算法;并分析在平均情况与最坏情况下,该算法分别要做多少次比较? 寻找这3个整数的中数的算法用C语言描述如下(中数m由函数值返回): int mid ( int a, int b, int c) { int m 。m=a 。 if ( m>=b ) { if (m>=c) { if ( b>=c ) m=b 。else m=c 。} } else { if ( m<=c) { if (b>=c) m=c。else m=b 。} } return ( m ) 。 } 假设a,b,c中的每一个数为中数的概率相等(均为1/3)。由于当a为中数时需要比较2次,b或c为中数时均需要比较3次,因此,在平均情况下上述算法所需要的比较次数为 2*(1/3)+3*(1/3)+3*(1/3)= 8/3 即在平均情况下,上述算法需要比较8/3次。 在最坏情况下,上述算法需要比较3次(当b或c为中数时)。 第二章 选择题 1、下列排序方法中,哪一个是稳定的排序方法()。归并排序稀尔排序 堆排序快速排序 [A] 教师批改:A 2、设输入序列为1,2,3,4,借助一个栈得到的输出序列可以是()。3,4,1,2 4,2,1,3 4,1,2,3 1,3,4,2 [D] 教师批改:D 3、用数组A[m]存放循环队列的元素值,若其头尾指针分别为front和rear,则循环队列中当前元素的个数为()。(rear+front)%m (rear-front+m)%m (rear-front)%m (rear-front+1)%m [D] 教师批改:B 4、对于下三角矩阵A,若采用一个一维数组B以行为主顺序存放压缩矩阵A,则A43存放在()中. B7 B8 B9 B10 [C] 教师批改:C 5、深度为5的二叉树至多有()个结点。16 32

混凝土结构设计原理作业(附答案)

CHENG 混凝土结构设计原理 第一章钢筋混凝土的力学性能 1、钢和硬钢的应力—应变曲线有什么不同,其抗拉设计值fy各取曲线上何处的应力值作为依据? 答:软钢即有明显屈服点的钢筋,其应力—应变曲线上有明显的屈服点,应取屈服强度作为钢筋抗拉设计值fy的依据。 硬钢即没有明显屈服点的钢筋,其应力—应变曲线上无明显的屈服点,应取残余应变为0.2%时所对应的应力σ0.2作为钢筋抗拉设计值fy的依据。 2、钢筋冷加工的目的是什么?冷加工的方法有哪几种?各种方法对强度有何影响? 答:冷加工的目的是提高钢筋的强度,减少钢筋用量。 冷加工的方法有冷拉、冷拔、冷弯、冷轧、冷轧扭加工等。 这几种方法对钢筋的强度都有一定的提高, 4、试述钢筋混凝土结构对钢筋的性能有哪些要求? 答:钢筋混凝土结构中钢筋应具备:(1)有适当的强度;(2)与混凝土黏结良好;(3)可焊性好;(4)有足够的塑性。 5、我国用于钢筋混凝土结构的钢筋有几种?我国热轧钢筋的强度分为几个等级?用什么符号表示? 答:我国用于钢筋混凝土结构的钢筋有4种:热轧钢筋、钢铰丝、消除预应力钢丝、热处理钢筋。 我国的热轧钢筋分为HPB235、HRB335、HRB400和RRB400三个等级,即I、II、III 三个等级,符号分别为 ( R ) 。 6、除凝土立方体抗压强度外,为什么还有轴心抗压强度? 答:立方体抗压强度采用立方体受压试件,而混凝土构件的实际长度一般远大于截面尺寸,因此采用棱柱体试件的轴心抗压强度能更好地反映实际状态。所以除立方体抗压强度外,还有轴心抗压强度。 7、混凝土的抗拉强度是如何测试的? 答:混凝土的抗拉强度一般是通过轴心抗拉试验、劈裂试验和弯折试验来测定的。由于轴心拉伸试验和弯折试验与实际情况存在较大偏差,目前国内外多采用立方体或圆柱体的劈裂试验来测定。 8、什么是混凝土的弹性模量、割线模量和切线模量?弹性模量与割线模量有什么关系? 答:混凝土棱柱体受压时,过应力—应变曲线原点O作一切线,其斜率称为混凝土的弹性模量,以E C表示。 连接O点与曲线上任一点应力为σC 处割线的斜率称为混凝土的割线模量或变形摸量,以E C‘表示。 在混凝土的应力—应变曲线上某一应力σC 处作一切线,其应力增量与应变增量的比值称为相应于应力为σC 时混凝土的切线模量C E'' 。 弹性模量与割线模量关系: ε ν ε '== ela C c C c E E E (随应力的增加,弹性系数ν值减小)。 9、什么叫混凝土徐变?线形徐变和非线形徐变?混凝土的收缩和徐变有什么本质区别? 答:混凝土在长期荷载作用下,应力不变,变形也会随时间增长,这种现象称为混凝土的徐变。 当持续应力σC ≤0.5f C 时,徐变大小与持续应力大小呈线性关系,这种徐变称为线性徐变。当持续应力σC >0.5f C 时,徐变与持续应力不再呈线性关系,这种徐变称为非线性徐变。 混凝土的收缩是一种非受力变形,它与徐变的本质区别是收缩时混凝土不受力,而徐变是受力变形。 10、如何避免混凝土构件产生收缩裂缝? 答:可以通过限制水灰比和水泥浆用量,加强捣振和养护,配置适量的构造钢筋和设置变形缝等来避免混凝土构件产生收缩裂缝。对于细长构件和薄壁构件,要尤其注意其收缩。 第二章混凝土结构基本计算原则 1.什么是结构可靠性?什么是结构可靠度? 答:结构在规定的设计基准使用期内和规定的条件下(正常设计、正常施工、正常使用和维修),完成预定功能的能力,称为结构可靠性。 结构在规定时间内与规定条件下完成预定功能的概率,称为结构可靠度。 2.结构构件的极限状态是指什么? 答:整个结构或构件超过某一特定状态时(如达极限承载能力、失稳、变形过大、裂缝过宽等)就不能满足设计规定的某一功能要求,这种特定状态就称为该功能的极限状态。 按功能要求,结构极限状态可分为:承载能力极限状态和正常使用极限状态。 3.承载能力极限状态与正常使用极限状态要求有何不同? 答:(1)承载能力极限状态标志结构已达到最大承载能力或达到不能继续承载的变形。若超过这一极限状态后,结构或构件就不能满足预定的安全功能要求。承载能力极限状态时每一个结构或构件必须进行设计和计算,必要时还应作倾覆和滑移验算。

相关文档