顺序表、链表题库

顺序表、链表题库
顺序表、链表题库

第三章顺序表

一、填空

1.若线性表最常用的操作是存取第 i 个元素及其前驱元素的值,则采用()存储结构最节省运算时间。

2.顺序存储结构的线性表中所有元素的地址()连续。

3.顺序存储结构的线性表其物理结构与逻辑结构是()的。

4.在具有n个元素的顺序存储结构的线性表任意一个位置中插入一个元素,在等概率条件下,平均需要移动()个元素。

5.在具有n个元素的顺序存储结构的线性表任意一个位置中删除一个元素,在等概率条件下,平均需要移动()个元素。

6.在具有n个元素的顺序存储结构的线性表中查找某个元素,平均需要比较()次。

7.当线性表的元素基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中第i个元素时,应采用( )存储结构。

8.顺序存储结构的线性表中,插入或删除某个元素时,元素移动的次数与其位置()关。(填有或无)。

9.顺序存储结构的线性表中,访问第i个元素与其位置()关。(填有或无)。

10.在具有n个元素的顺序存储结构的线性表中要访问第i个元素的时间复杂度是()。

11.在顺序表L中的i个位置插入某个元素x,正常插入时,i位置以及i位置以后的元素需要后移,首先后移的是()个元素。

12.要删除顺序表L中的i位置的元素x,正常删除时,i位置以后的元素需要前移,首先前移的是()元素。

13.若顺序表中的元素是从1位置开始存放的,要在具有n个元素的顺序表中插入一个元素,合法的插入位置是()。

14.若顺序表中的元素是从1位置开始存放的,要删除具有n个元素的顺序表中某个元素,合法的删除位置是()。

15.在具有n个元素的顺序存储结构的线性表中删除某个元素的时间复杂度是()。

16.在具有n个元素的顺序存储结构的线性表中插入某个元素的时间复杂度是()。

17.在具有n个元素的顺序存储结构的线性表中要访问第i个元素的后继结点的时间复杂度是()。

18.在具有n个元素的顺序存储结构的线性表中,若给定的是某个元素的关键字值,要访问该元素的其它信息的时间复杂度是()。

19.在顺序表中查找某个元素时,需要将当前元素与要找的元素进行若干次的比较,算法经常用while循环来实现,while里面的条件是没找完且()。

20.在顺序表中查找某个元素时,需要将当前元素与要找的元素进行若干次的比较,算法经常用while循环来实现,while里面的条件是()且没找到。

21.如果要将两个升序排列的整型顺序表a中的元素合并到b中(b的空间足够大),合并后表中元素依然升序排列,可以通过多次调用查找函数查找插入位置,再调用()函数来实现插入。

22.若要将一个整型的顺序表拆分为一个存放正数,另一个存放非正数的两个顺序表,存放正数的顺序表用原来的表,时间复杂度为()。

23.顺序表中查找某个元素时,从前到后查找与从后到前查找的时间复杂度()同。

二、简答题

1.下列算法完成在顺序表SeqL的第i个位置插入元素x,正常插入返回1,否则返回0或-1,请在空的下划线上填写合适的内容完成该算法。

列算法完成删除顺序表SeqL的第i个元素,元素类型为DataType,其值通过参数px 返回,请在空的下划线上填写合适的内容完成该算法。

int seq_del (SeqList * SeqL,int i, )

{ int j ;

if (SeqL->len==0) /*表空*/

{ printf("the list is empty\n");return 0;}

elseif( ) /*位置不对*/

{ printf("\n the position is invalid"); return -1;}

else /*正常删除*/

{ *px=SeqL->data[i]; /*删除元素通过参数px 返回*/

for (j=i+1;j<=SeqL->len;j++)

; /*元素前移*/

; /*表长减1*/

return 1;

}

}

3.简述什么是顺序存储结构,顺序存储结构的优缺点都有哪些。

4. 设有一整型顺序表L,元素从位置1开始存放,下列算法实现将以第一个元素为基准,将其放置在表中合适的位置,使得其前面的元素都比它小,后面的元素均大于等于该元素。请在空的下划线上填写合适的内容完成该算法。

void part(SeqList *L)

{ ; /*循环变量声明*/

int x;

; /*将第一个元素置入x中*/

for(i=2;i<=L->len;i++)

if( ) /*当前元素小于基准元素*/ { L->data[0]=L->data[i]; /*当前元素暂存在0位置*/ for(j=i-1;j>=1;j--) /*当前元素前面所有元素后移*/

L->data[j+1]=L->data[j];

/*当前元素从0位置移到最前面*/

}

}

5. 设有一整型顺序表L,元素从位置1开始存放,下列算法实现将以第一个元素为基准,将其放置在表中合适的位置,使得其前面的元素都比它小,后面的元素均大于等于该元素。请在空的下划线上填写合适的内容完成该算法。

void part(SeqList *L)

{ int i,j;

i=1; /*i指向第一个位置*/

j=L->len; /*j指向最后一个位置*/

L->data[0]= L->data [1]; /*将基准元素暂存在0位置*/

while( )

{ while((L->data [j]>= L->data [0])&&(i

if (i

{ L->data [i]= L->data [j];

i++;

while((L->data [i]<= L->data [0])&&(i

if (i

{

}

}

/*将基准元素放在i位置*/

}

四、完整程序设计

1. 在顺序存储结构的职工工资表中,职工工资信息包括:职工号(no)、姓名(name)、职称(pro)、工资(sal)等四项信息,请编写一完整的程序,实现以下功能:(1)创建信息表:从键盘读入所有职工的信息。(3分)

(2)删除:给定职工号,删除该职工的信息。(6分)

(3)修改:对职称为“教授”的职工工资加100。(4分)

(4)在显示器(屏幕)上显示所有职工的各项信息。(3分)

(5)主程序以菜单的方式调用以上功能。(4分)

元素类型及顺序表类型定义如下:

typedef struct

{ char no[8],name[10],pro[6];

float sal;

} DataType;

typedef struct

{ DataType data[MAXLEN+1];

int len;

}SeqList;

2.图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)、单价五项信息,编写完整程序通过顺序表实现:

(1)初始化:录入现有的所有图书的五项信息。(3分)

(2)借书:每本书每次只能借一本,如果库中有该书,则允许借阅并使该书的现存量减1,否则给出相应提示信息。(4分)

(3)价值估算:统计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(4分)

(4)显示:显示图书管所有藏书信息。(3分)

(5)主程序以菜单的方式调用以上功能。(4分)

元素类型及顺序表类型定义2分。

3.设有两个整型顺序表L1,L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型(2分);设计以下自定义函数:

(1)录入顺序表中所有元素的值。(3分)

(2)将顺序表L1,L2合并为到另外一个顺序表L3中,L3中的元素非递减有序排列。(8分)

(3)输出顺序表中元素的值。(3分)

主函数通过调用以上函数实现两个表的合并并显示合并结果。(4分)

4.有一个职工基本信息管理,职工信息包含:职工号、姓名、性别;编写完整程序,实现如下功能:

(1)录入函数input:从键盘读入职工信息。(3分)

(2)删除函数delete:给定职工号,删除该职工的信息。(5分)

(3)插入函数insert:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。(6分)

主函数以菜单形式调用以上功能,类型定义2分,主函数4分。

5.有一个学生信息包含:学号no〈主关键字〉;姓名name;英语成绩score。定义学生信息类型DataType及顺序表类型SeqList;

(1)录入函数input:从键盘读入学生信息。(3分)

(2)查找函数search:任意给定一个学号,查找其英语成绩,将其成绩通过函数返回,若找不到,返回-1。(5分)

(3)插入函数insert:假定表中学生信息按学号升序排列,任意给定一学生信息,使得插入后依然有序。(6分)

主函数以菜单形式调用以上功能,类型定义2分,主函数4分。

6. 设有一个超市的库存情况如下表1所示:

表1 超市商品信息

编写完整程序实现:

(1) 从键盘输入货物信息并将其放在顺序表中。(4分)。

(2)假定商品信息按货号升序存放,任意插入一商品信息,要求按货号有序插入到表中。(6分)

(3)任意给定一个商品编号,查找其商品名称、价格和库存量,如果存在该商品输出并返回1,否则返回0。(4分)

主函数以菜单形式调用以上功能,类型定义2分,主函数4分。

7.有一个房产信息管理系统,房产信息包含:门牌号、户主、电话号码、面积。编程实现如下功能(要求用顺序表存储):

(1) 编写一个初始化函数input:从键盘读入房产基本信息。(3分)

(2) 编写一个取暖费用计算函数cost:任意给定一门牌号,根据门牌号进行查询,找到时,返回应缴纳取暖费,否则返回0,并且给出提示信息。计算公式为:每户应缴纳费用=面积*元/m2。。(4分)

(3)编写一排序函数sort:按门牌号升序排列。(4分)

(4)编写一个函数output:输出所有面积低于90平方米住户的名称。(3分)

主函数以菜单形式调用以上功能,类型定义2分,主函数4分。

8.有一个学生信息包含:学号no〈主关键字〉;姓名name;英语成绩english,计算机成绩comp,数学成绩math。定义学生信息类型DataType及顺序表类型SeqList;

(1)录入基本信息函数input:从键盘读入学生姓名、学号。(3分)

(2)录入成绩inp_score:给定课程名称,录入所有人本门课的成绩。(3分)

(3) 删除函数del:假定表中学生信息学号升序排列,任意给定一学生学号,删除该学生信息,正常删除返回1,否则返回0。(6分)

(4)输出函数output:输出所有人的信息。(2分)

主函数以菜单形式调用以上功能,类型定义2分,主函数4分。

9.设有一个商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price)

编程实现以下功能:

(1)货物信息录入:按货号有序输入学生信息。(3分)

(2)进货管理:任意输入一个货物信息,在表中查找该货物,若存在此货物,则将该货物的数量加到表中货物数量中;若不存在该货物,则将该货物信息按照货物号有序插入到表中。(10分)

(3)货物信息输出:输出所有货物的信息。(2分)

主函数以菜单形式调用以上功能,类型定义2分,主函数3分。

10.设有一个商品信息表(包括商品编号no、商品名称name、商品库存量count和商品单价price)

编程实现以下功能:

(1)货物信息录入:按货号有序输入货物信息。(3分)

(2)出货管理:函数返回值为购买该货物的金额。任意输入一个货物信息x,在表中查找该货物,若存在此货物且库存量大于等于x的数量,则将表中货物的库存量减去x的数量,计算出需支付的金额并返回;若库存量不足,则给出相应的提示并返回0。若不存在该货物,返回-1。(10分)

(3)货物信息输出:输出所有货物的信息。(2分)

主函数以菜单形式调用以上功能,类型定义2分,主函数3分。

11. 有一自来水公司水费缴费系统中,数据信息包括:用户名称、编号、用水量、水费、缴费情况(缴清,未缴),请定义用户信息数据类型及顺序表类型并设计如下函数:函数1:输入所有用户的名称,编号,用水量,用户名为””作为结束符。每个用户的水费通过公式:水费=用水量*计算得出。用户的缴费情况都设为未缴。(4分)函数2:输入用户编号,查找到该用户信息并将该用户的缴费情况都设为缴清。(4分)函数3:设计一个排序函数,将元素信息按编号有序排列。(4分)

函数4:输出所有的未缴费的用户名称。(3分)

主函数以菜单形式调用以上功能,类型定义2分,主函数3分。

12. 设有一个超市商品信息表(包括商品编号no、商品名称name、商品库存量amount 和商品单价price)

编程实现以下功能:

(1)货物信息录入:输入一批货物信息,货号为“000”时结束。(3分)

(2)购物管理:输入若干货物货号、数量(即客户所购买的货物信息),货号为“000”时结束,输出所购买的每个货物货号、名称、数量、单价、金额(单价通过查找得到,金额=单价×数量);最后输出总的价格。(10分)

(3)货物信息输出:输出所有货物的信息。(2分)

主函数以菜单形式调用以上功能,类型定义2分,主函数3分。

13.有一学生成绩信息包括:姓名、学号、成绩、名次;编程实现以下功能:

(1)输入所有人姓名、学号、成绩,名次初始化为0。(3分)

(2)给定一学生学号,输出其成绩,若不存在该学号,给出相应的错误提示。(4分)(3)将学生信息按成绩由高到低排序,并将其名次存入该学生信息的“名次”中。(6分)

(4)输出所有学生的信息。(2分)

主函数以菜单形式调用以上功能,类型定义2分,主函数3分。

14.学生考勤管理。学生信息包括:姓名、学号、考勤情况(迟到、旷课、按时上课),成绩及本次已经是第几次考勤。每个人有20次考勤;

编程实现以下功能:

(1)学生基本信息录入及初始化:输入所有学生的姓名、学号,将每个人的考勤成绩置0,将考勤次数也置0。(3分)

(2)输入考勤情况:每次上课,输入本次考勤,从第一个人开始,依次输入每个人的考勤。(4分)

(3)计算考勤成绩:迟到得分,旷课得0分,正常上课得1分,计算每个人的考勤成绩。(5分)

(4)输出所有人的学号、姓名、考勤情况、考勤成绩。(3分)

主函数以菜单形式调用以上功能,类型定义2分,主函数3分。

元素类型定义如下:

typedef struct

{ char name[10]; /*name表示学生姓名*/

char no[12]; /*no表示学号*/

char kaoqin[21]; /*kaoqin表示20次的考勤,q---缺课,c---迟到,z---按时上课*/

int k; /*k表示已经考勤到第几次,初始化时将其置为-1*/

int score; /*score表示考勤成绩*/

} DataType;

若有DataType x,则x. kaoqin[2]表示x的第三次考勤。

15. 有一个职工基本信息管理,职工信息包含:职工号、姓名、工资;编写完整程序,实现如下功能:

(1)录入函数input:从键盘读入职工信息。(3分)

(2)修改函数modify:给定职工号,查找该职工,若找到修改其信息,若找不到,给出错误提示。(4分)

(3)插入函数insert:假定表中职工信息按职工号升序排列,任意给定一职工信息,使得插入后依然有序。(6分)

(4)输出函数output:输出所有人的信息。(2分)

主函数以菜单形式调用以上功能,类型定义2分,主函数3分。

16. 有一个学生成绩管理,学生信息包含:学号、姓名、成绩;编写完整程序,实现如下功能:

(1)录入函数input:从键盘读入学生信息。(3分)

(2)修改函数modify:给定学号,查找该学生,若找到修改其成绩,若找不到,给出错误提示。(4分)

(3)排序函数sort:将学生信息按成绩由高到低排序。 (6分)

(4)输出函数output:输出所有人的信息。(2分)

主函数以菜单形式调用以上功能,类型定义2分,主函数3分。

17. 图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:

(1)初始化:录入现有的所有图书的四项信息。(3分)

(2)清库:给定某书x的书号及数量,若找到该书,将该书的现存量及库存量减

去x的数量,若减后的库存量为0,则删除该书信息;若找不到该书,则给出错误提示。(9分)

(3)显示:显示图书管所有藏书信息。(2分)

(4)主程序以菜单的方式调用以上功能。(4分)

元素类型及顺序表类型定义(2分)

18.图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:

(1)初始化:录入现有的所有图书的四项信息。(3分)

(2)检索:给定书名,输出所有与给定书名相同的书的信息。(3分)

(3)价值估算:统计库中所有书的价钱。价钱为所有书的单价乘以库存量的累加和。(6分)

(4)显示:显示图书管所有藏书信息。(2分)

(5)主程序以菜单的方式调用以上功能。(4分)

(6)完成元素类型定义及顺序表类型定义(2分)。

19.图书管每本图书包含:书号(no)、书名(name)、现存量(newnum)、总库存量(sumnum)四项信息,编写完整程序通过顺序表实现:

(1)初始化:录入现有的所有图书的四项信息。(3分)

(2)查找:给定书号,在表中查找该书,若存在返回其位置,否则返回0。

(4分)

(3)进书:给定某个图书的书名、书号、数量,若此次购进的是图书馆已有的图书,则修改其现存量和总库存量;若此次购进的图书是新书,按书号有

序插入到表中。(假定表中元素按书号升序排列)(7分)

(4)主程序以菜单的方式调用以上功能。(4分)

(5)完成元素类型定义及顺序表类型定义(2分)。

20.学生学费管理。学生信息包括:姓名、学号、学费、已缴学费、欠费。编写完整程序通过顺序表实现:

(1)初始化:录入所有人的姓名、学号、学费。(3分)

(2)缴费:输入学号及已缴学费,欠费=学费-已缴学费。(5分)

(3)催缴学费:对欠费为正数的人,输出其姓名、学号、欠费并统计所有人的欠费总数,总的欠费数目以函数值的形式返回(6分)

(4)主程序以菜单的方式调用以上功能。(4分)

(5)完成元素类型定义及顺序表类型定义(2分)。

第四章链表

一、填空

1.链式存储结构的线性表中所有元素的地址()连续。

2.单链表中增加头结点的目的是为了()。

3.用单链表存储线性表,每个结点需要两个域,一个是数据域,另一个是()。

4.用单链表存储线性表,每个结点需要两个域,一个是(),另一个是指针域。

5.链式存储结构的线性表其元素之间的逻辑关系是通过结点的( )域来表示

的。

6.指针为空表示该指针所指向的结点()。

7.某带头结点的单链表的头指针为head,判定该链表为非空的条件是( )。

8.某带头结点的单链表的头指针为head,判定该链表为空的条件是( )

9.在单链表L中,指针P所指的结点为尾结点的条件是()。

10.在单链表L中,指针P所指的结点有后继结点的条件是()。

11.头插法建立单链表时,元素的输入顺序与在链表中的逻辑顺序是()的。

12.尾接法建立单链表时,元素的输入顺序与在链表中的逻辑顺序是()的。

13.在带有头结点的单链表HL中,要在首元元素之前插入一个由指针p指向的结点,

则应执行p->next=HL->next及( )操作。

14.设指针变量p指向单链表中某结点A,则删除结点A的后继结点需要的操作为

()(不考虑存储空间的释放)。

15.在单链表中,若给定某个结点的指针,要删除该结点的后继结点的时间复杂度为

()。

16.统计单链表中元素个数的时间复杂度是()。

17.要访问具有n个结点的单链表中任意一个结点的时间复杂度是()。

18.链式存储结构的线性表中,插入或删除某个元素所需的时间与其位置()关。

(填有或无)。

19.在单链表中,若给定某个结点的数据信息,要删除该结点的后继结点的时间复杂

度为()。

20.若指针p,q的值相同,则*p和*q的值()相同。

21.若要将一个单链表中的元素倒置,可以借助()建立单链表的思想将链表

中的结点重新放置。

22.线性表用链式存储结构存储比用顺序存储结构存储所占的存储空间()多。

(填一定或不一定)

二、简答题

1.下列算法完成用头插法为数组a中的n个元素建立一个带头结点的单链表,并返回

其头指针,请在空的下划线上填写合适的内容完成该算法。

NodeType* creatl2 (DataType a[],int n)

{ NodeType*head, *s;

int i;

head=(NodeType*)malloc(sizeof(NodeType)); /*为头结点申请空间*/

if (head==NULL) return NULL;

; /*链表初始化为空*/

for (i=1;i<=n;i++)

{ s=(NodeType*)malloc(sizeof(NodeType));

; /*给新结点的数据域赋值*/ s->next=head->next; /*新结点的指针域指向头的下一个元

素*/

; /*头结点指向新结点*/

}

; /*返回头指针*/

}

2.下列算法完成用尾接法为数组a中的n个元素建立一个带头结点的单链表,并返回其头指针,请在空的下划线上填写合适的内容完成该算法。

NodeType* creatl1(DataType a[],int n)

{ NodeType *head,*tail,*s; /* head为头指针, tail为尾指针*/

int i;

head=initl( ); /*链表初始化*/

if (head==NULL) return NULL;

; /*尾指针初始化为头指针*/

for (i=0;i

{ ; /*为新结点申请空间*/ if (s==NULL) return NULL; /*申请不到空间,则返回空*/ ; /*给新结点的数据域赋值*/ s->next=NULL; / *给新结点的指针域赋值*/

tail->next=s; /*将新结点接到表尾*/

; /*新结点为当前的表尾*/

}

return head; /*返回头指针*/

}

3. 简述什么是链式存储结构,链式存储结构的优缺点有哪些。

4. 请解释:结点,头结点,头指针,首元结点。

5. 已知整型带头结点的单链表H,下列算法实现将该链表中的元素倒置,若原链表中的元素为1,2,3,4,5;倒置后在则变成5,4,3,2,1. 请在空的下划线上填写合适的内容完成该算法。

void reverse ( )

{ NodeType*p;

p=H-> next; /*p指向首元结点*/

H->next=NULL; /*头结点的指针域为空*/

while( ) /*当p结点不为空时*/

{ q=p;

p=p->next; /*p指针后移*/

/*将q所指向的结点插入到头结点之后*/

}

}

三、算法设计

1.设单链表的结点类型定义如下:

typedef struct node

{

int data;

struct node *next;

}NodeType;

设计一算法在带头结点的单链表L中查找元素x,若找到,则返回其位置;否则返回一个空位置。

2.设单链表的结点类型定义如下:

typedef struct node

{

int data;

struct node *next;

}NodeType;

设计一算法查找带头结点的单链表L中第i个元素,若找到,则返回其位置;否则返回一个空位置。

3.设单链表的结点类型定义如下:

typedef struct node

{

int data;

struct node *next;

}NodeType;

设计一算法求带头结点的单链表L的长度。

4.设单链表的结点类型定义如下:

typedef struct node

{

int data;

struct node *next;

}NodeType;

设计一算法统计带头结点的单链表L中元素x的个数。

5.设单链表的结点类型定义如下:

typedef struct node

{

int data;

struct node *next;

}NodeType;

设计一算法在带头结点的单链表L中查找元素x的前驱结点,若找到,则返回其位置;否则返回一个空位置。

6.设单链表的结点类型定义如下:

typedef struct node

{

int data;

struct node *next;

}NodeType;

设计一算法在带头结点的单链表L中,将新元素x插入到带头结点的单链表L中的元素elm之后,若不存在元素elm,则插入到最后。

7.设单链表的结点类型定义如下:

typedef struct node

{

int data;

struct node *next;

}NodeType;

设计一算法删除带头结点的单链表L中的元素x(元素x只有一个)。

8.设单链表的结点类型定义如下:

typedef struct node

{

int data;

struct node *next;

}NodeType;

设计一算法删除带头结点的单链表L中所有的元素x(元素x可能有多个)。

9. 设有一整型的带头结点的单链表,其元素值升序排列,请定义结点的类型并设计一算法实现:任意给定一个元素x将其插入到该表中,使得该链表中的数据依然有序。

10. 已知一带头结点的单链表L,结点类型为:

typedef struct node

{

int data;

struct node *next;

}nodetype;

设计一算法,求该链表中值最大的结点并返回该结点的指针,若链表为空,则返回一个空指针。

11. 已知一带头结点的单链表L,结点类型为:

typedef struct node

{

int data;

struct node *next;

}nodetype;

设计一算法,求该链表中所有元素的平均值并返回。

链表排序算法总结

这个星期做数据结构课设,涉及到两个基于链表的排序算法,分别是基于链表的选择排序算法和归并排序算法。写出来跟大家一起分享一下,希望对数据结构初学朋友有所帮助,高手就直接忽视它吧。话不多说,下面就看代码吧。 [c-sharp]view plaincopy 1.node *sorted(node *sub_root) 2.{ 3.if (sub_root->next) 4. { 5. node * second_half = NULL; 6. node * first_half = sub_root; 7. node * temp = sub_root->next->next; 8.while (temp) 9. { 10. first_half = first_half->next; 11. temp = temp->next; 12.if(temp) 13. temp = temp->next; 14. } 15. second_half = first_half->next; 16. first_half->next = NULL; 17. node * lChild = sorted(sub_root); 18. node * rChild = sorted(second_half); 19.if (lChild->data < rChild->data) 20. { 21. sub_root = temp = lChild; 22. lChild = lChild->next; 23. } 24.else 25. { 26. sub_root = temp = rChild; 27. rChild = rChild->next; 28. } 29.while (lChild&&rChild) 30. { 31.if (lChild->data < rChild->data ) 32. { 33. temp->next = lChild; 34. temp = temp->next; 35. lChild = lChild->next; 36. } 37.else 38. {

实验二 链表操作实现

实验二链表操作实现 实验日期: 2017 年 3 月 16 日 实验目的及要求 1. 熟练掌握线性表的基本操作在链式存储上的实现; 2. 以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 3. 掌握线性表的链式存储结构的定义和基本操作的实现; 4. 通过本实验加深对C语言的使用(特别是函数的参数调用、指针类型的应用)。 实验容 已知程序文件linklist.cpp已给出学生身高信息链表的类型定义和基本运算函数定义。 (1)链表类型定义 typedef struct { int xh; /*学号*/ float sg; /*身高*/ int sex; /*性别,0为男生,1为女生*/ } datatype; typedef struct node{ datatype data; /*数据域*/ struct node *next; /*指针域*/ } LinkNode, *LinkList; (2)带头结点的单链表的基本运算函数原型 LinkList initList();/*置一个空表(带头结点)*/ void createList_1(LinkList head);/*创建单链表*/ void createList_2(LinkList head);/* 创建单链表*/ void sort_xh(LinkList head);/*单链表排序*/ void reverse(LinkList head);/*对单链表进行结点倒置*/ void Error(char *s);/*自定义错误处理函数*/ void pntList(LinkList head);/*打印单链表*/ void save(LinkList head,char strname[]);/*保存单链表到文件*/

实验一 顺序表与链表 成品

实验一顺序表与链表 一、实验目的 1、掌握线性表中元素的前驱、后续的概念。 2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。 3、对线性表相应算法的时间复杂度进行分析。 4、理解顺序表、链表数据结构的特点(优缺点)。 二、实验预习 说明以下概念 1、线性表:线性表是最常用且最简单的一种数据结构。一个线性表是n个数据元素的有限 序列。 2、顺序表:线性表的顺序存储结构或顺序映像,通常,称这种存储结构的线性表为顺序表。 3、链表:指针域中存储的信息称作指针或链。N个接点连接成一个链表,故又称线性链表。 三、实验内容和要求 1、阅读下面程序,在横线处填写函数的基本功能。并运行程序,写出结果。 ●#include ●#include ●#define ERROR 0 ●#define OK 1 ● ●#define INIT_SIZE 5 /*初始分配的顺序表长度*/ ●#define INCREM 5 /*溢出时,顺序表长度的增量*/ ●typedef int ElemType; /*定义表元素的类型*/ ●typedef struct Sqlist{ ●ElemType *slist; /*存储空间的基地址*/ ●int length; /*顺序表的当前长度*/ ●int listsize; /*当前分配的存储空间*/ ●}Sqlist; ● ●int InitList_sq(Sqlist *L); /* 构造一个空的线性表L */ ●int CreateList_sq(Sqlist *L,int n); /* 不断地插入元素 */ ●int ListInsert_sq(Sqlist *L,int i,ElemType e);/* 在L中第i个位置之前插 入一个数据元素e,L的长度加1 */ ●int PrintList_sq(Sqlist *L); /*输出顺序表的元素*/ ●int ListDelete_sq(Sqlist *L,int i); /*删除第i个元素*/

过程控制题库全

填空 1 前馈控制一般有四种结构形式,分别为:(),(),(),()。 2 工业上PID控制器一般可以分为四类,分别为:(),(),(),()。 (1)Smith预估补偿控制对给定值的跟随效果比对干扰量的抑制效果要好() (2) 在PID控制中,若系统震荡剧烈,则应加大积分信号() (3)在PID控制中,为了提高系统的响应速度,则应加大比例信号() (4)在控制系统中,控制通道时间常数的大小反映了控制作用的强弱() (5)增量型PID算式仅仅是计算方法上的改进,并没有改变位置型PID算式的本质() )(6)串级控制系统的主回路可以看成是一个定值控制系统()(7)在模糊控制中,隶属度函数值一般不会大于1 (??在解耦控制中,若矩阵的元素越接近1,表示相关通道受 耦合的影响越小()(8) )((9)在选择性控制中,总有一个控制器(调节器)处于开环状态 )((10) 分程控制本质上是一个单回路控制系统 )((10) 均匀控制结构上与单回路控制系统完全相同 K?s?e?(s)G) )自衡的非振荡过程传递函数一般可写为:11 ( ()?1s(Ts?) )不论前馈还是反馈控制系统(12扰动滞后都不会影响控制系统的品质( f) (13)任何串级控制系统副对象的动态滞后总是比整个对象的动态滞后大( ) 14()前馈控制系统属于开环控制系统( ?) 为负值,表示严重关联(15)在解耦控制中,相对增益( ) 的控制方式中没有计算机控制( (16)实验室控制AE2000A) 中,JX-300的所有卡件均为热插拔卡件( (17)在实验室DCS) 18)鲁棒控制是基于含有不确定性的非精确数学模型来设计系统控制器。( () 19)鲁棒控制中,小增益定理给出了多变量系统稳定的充要条件( ()(20)微分作用在高频下有大的振幅比,所以存在高频噪声的地方可以采用微分( (21) 均匀控制的控制器参数整定目标和方法与单回路控制系统完全相同()(22) 在PID )控制中,若系统的超调量过大,则可以通过减小比例系数的大小修正()(23)在PID控制中,通过加入积分控制实现系统的无静差控制(在控制系统中,控制通道时间常数的大小反映了控制作用的强弱((24))在控制系统中,扰动通道滞后时间常数的大小反映了扰动作用的强弱()(25)串级控制系统的副回路可以看成是一个定值控制系统()26 )(Smith)(27 预估补偿控制效果的好坏依赖于系统的数学模型的精度() Smith)内模控制本质上时一种特殊的(28)预估补偿控制(

倒置单链表的算法

倒置单链表的算法 void pur_LinkList(LinkList H) { LNode *p,*q,*r; p=H->next; /*p指向第一个结点*/ if(p==NULL) return; while (p->next) { q=p; while (q->next) /* 从*p的后继开始找重复结点*/ { if (q->next->data==p->data) { r=q->next; /*找到重复结点,用r指向,删除*r */ q->next=r->next; free(r); } /*if*/ else q=q->next; } /*while(q->next)*/ p=p->next; /*p指向下一个,继续*/ } /*while(p->next)*/ } ―――――――――――――――――――――――――――――――――――――status LinkListReverse(LinkList L) /*对单链表中的元素倒置*/ { int a[N] ,i=0,count=0; LinkList Lb; Node *p,*q; p=L->next; while(p!=NULL) { a[i++]=p->data; p=p->next; count++; } ―――――――――――――――――――――――――――――――― 2.21 void reverse(SqList &A)//顺序表的就地逆置 { for(i=1,j=A.length;iA.elem[j]; }//reverse 2.22 void LinkList_reverse(Linklist &L)//链表的就地逆置;为简化算法,假设表长大于2 {

实验1-2顺序表和链表基本操作_参考答案

实验1、2:线性表的应用参考代码 一、实验预备知识 1.复习C中编写函数的相关内容。 2.复习如何用主函数将多个函数连在一起构成一个C完整程序。 二、实验目的 1.掌握线性表的顺序和链式存储结构 2.熟练运用线性表在顺序存储方式下的初始化、创建、输出、插入和删除运算 3.熟练运用线性表在链式存储方式下的创建、输出、插入和删除运算 三、实验要求 1.编写初始化并创建线性表和输出线性表的算法。 2.编写对线性表插入和删除运算算法,要判断位置的合法性和溢出问题。 3.编写有序表的插入和删除运算算法。 4.编写一个主函数,将上面函数连在一起,构成一个完整的程序。 5.将实验源程序调试并运行,写出输入、输出结果,并对结果进行分析。 四、实验内容 顺序表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.初始化并建立顺序表。(开辟的存储空间大小为8) 3.编写顺序表输出算法。 4.依次插入3、21、15、99四个数,分别插入在第1、8、4和12位置,每插入一次都要输出一次顺序表。 5.删除第1,第9和第12个位置上的元素,每删除一个元素都要输出一次顺序表。 6.编写一个排序算法,对线性表中元素从小到大排列。 7.向有序表分别插入20和50,插入后表仍然有序。(修改开辟的存储空间大小为15)

单链表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.建立一个带表头结点的单链表(前插入法和尾插入法均可)。 3.编写单链表输出算法。 4.依次插入3、21、15、99四个数,分别插入在第1、8、4和12位置,每插入一次都要输出一次单链表。 5.删除第1,第9和第12个位置上的元素,每删除一个元素都要输出一次单链表。 6.编写一个排序算法,对链表中元素从小到大排列。 7.向有序链表分别插入20和50,插入后表仍然有序。 五、实验结果 顺序表源程序: #include using namespace std; const int MAXSIZE=8; //做有序表插入操作时,将8改为15 typedef int DataType; typedef struct { DataType data[MAXSIZE]; int length; }SeqList; void Init_SeqList(SeqList &L);//创建空顺序表算法 void Show_SeqList(SeqList L);//顺序表输出算法 void Create_SeqList(SeqList &L);//顺序表创建算法 int Insert_SeqList(SeqList &L,DataType x,int i);//顺序表的插入算法 int Delete_SeqList(SeqList &L,int i);//顺序表的删除算法 int Locate_SeqList(SeqList L,DataType x);//顺序表的按值查找算法

过程控制模拟试题

过程控制模拟试题(一) 1、什么是过程控制系统? 其基本分类方法有哪几种? (5分) 2、什么是机理分析法建模? 该方法有何特点? (5分) 3、何谓调节阀的流通能力?对数流量特性有何特点?(5分) 4、何谓单回路系统?说明组成单回路系统各部分的作用。(10分) 5、选择调节器控制规律的依据是什么? 若已知过程的数学模型,怎样来选择PID控制规 律? (10分) 6、什么叫比值控制系统? 常用比值控制方案有哪些? 并比较其优缺点。(10分) 7、试推导单容过程数学模型(输入量为q1,被控量为h1)。(15分) 8、某生产过程中,冷物料通过加热炉对其进行加热。热物料温度必须满足生产工艺要求, 故设计下图所示温度控制系统流程图。试画出其框图,并确定调节阀的气开、气关形式和调节器的正、反作用。(20分) 加热炉 9、对于下图所示的加热炉串级控制系统,试画出系统的结构框图,并分析其工作过程。 与单回路系统相比,串级控制系统有哪些主要特点?(20分)

过程控制模拟试题(一)答案 1、答案 过程控制是通过各种检测仪表、控制仪表和电子计算机等自动化技术工具,对整个生产过程进行自动检测、自动监督和自动控制。一个过程控制系统是由被控过程和过程检测控制仪表两部分组成的。 按过程控制系统的结构特点可进行如下分类: 1)反馈控制系统:反馈控制系统是根据系统被控量的偏差进行工作的,偏差值是控制的依据,最后达到消除或减小偏差的目的。 2)前馈控制系统:前馈控制系统直接根据扰动量的大小进行工作,扰动是控制的依据。由于它没有被控量的反馈,所以也称为开环控制系统。 3)前馈—反馈控制系统(复合控制系统):开环前馈控制的最主要的优点是能针对主要扰动及时迅速地克服其对被控参数的影响;对于其余次要扰动,则利用反馈控制予以克服,使控制系统在稳态时能准确地使被控量控制在给定值上。 按给定值信号的特点可进行如下分类: 1)定值控制系统:就是系统被控量的给定值保持在规定值不变,或在小范围附近不变。 2) 程序控制系统:它是被控量的给定值按预定的时间程序变化工作的。控制的目的就是使系统被控量按工艺要求规定的程序自动变化。 3) 随动控制系统:它是一种被控量的给定值随时间任意变化的控制系统。其主要作用是克服一切扰动,使被控量快速跟随给定值而变化。 2、答案 机理建模: 是根据过程的内部机理(运动规律),运用一些已知的定律、原理,如生物学定律、化学动力学原理、物料平衡方程、能量平衡方程、传热传质原理等,建立过程的数学模型。特点: 机理分析法建模的最大特点是当生产设备还处于设计阶段就能建立其数学模型。由于该模型的参数直接与设备的结构、性能参数有关,因此对新设备的研究和设计具有重要意义。另外,对于不允许进行试验的场合,该方法是唯一可取的。机理分析法建模主要是基于分析过程的结构及其内部的物理化学过程,因此要求建模者应有相应学科的知识。通常此法只能用于简单过程的建模。对于较复杂的实际生产过程来说,机理建模有很大的局限性,这是因为实际过程的机理并非完全了解,同时过程的某些因素如受热面的积垢、催化剂的老化等可能在不断变化,难以精确描述。另外,一般来说机理建模得到的模型还需通过试验验证。 3、答案 流通能力C表示执行器的容量,其定义为:调节阀全开,阀前后压差为0.1MPa,流体密度为1g/cm3时,每小时流过阀门的流体流量(体积(m3)或质量(kg))。 对数(等百分比)流量特性:

实现单链表的各种基本运算

实现单链表的各种基本运算 一、实验目的 了解单链表表的结构特点及有关概念,掌握单链表的各种基本操作算法思想及其实现。 二、实验内容 编写一个程序,实现顺序表的各种基本运算: 1、初始化单链表; 2、单链表的插入; 3、单链表的输出; 4、求单链表的长度 5、判断单链表是否为空; 6、输出单链表的第i位置的元素; 7、在单链表中查找一个给定元素在表中的位置; 8、单链表的删除; 9、释放单链表 三、算法思想与算法描述简图

主函数main void InitList(LinkList*&L) 初始化单链表L void DestroyList(LinkList*&L)//释放单链表L int ListEmpty(LinkList*L)//判断单链表L是否为空集 int Listlength(LinkList*L)//返回单链表L的元素个数 void DispList(LinkListt*L)//输出单链表L int GetElem(LinkList*L,int i,char e)/*ElemType e)获 取单链表L中的第i个元素*/ int LocateEmpty(LinkList*L,char e)/*ElemType e)在单 链表L中查找元素e*/ int ListInsert(LinkList*&L,int i,char e)/*ElemType e) 在单链表中第i个位置上插入元素e*/ int ListDelete(LinkList*&L,int i,char &e)/*ElemType e)在单链表L中删除第i个元素*/

四、实验步骤与算法实现 #include #include typedef char ElemType; typedef struct LNode//定义单链表 { ElemType data; struct LNode *next; }LinkList; void InitList(LinkList*&L) { L=(LinkList*)malloc(sizeof(LinkList));//创建头结点 L->next=NULL;//头结点赋值为空 } void DestroyList(LinkList*&L)//销毁单链表(释放单链表L占用的内存空间即逐一释放全部结点的空间) { LinkList*p=L,*q=p->next; while(q!=NULL) {free(p); p=q; q=p->next;} free(p); } int ListEmpty(LinkList*L)//判线性表是否为空表ListEmpty(L) { return(L->next==NULL);}//若单链表L没有数据结点,则返回真,否则返回假。 int ListLength(LinkList*L)//求线性表的长度ListLength(L) { LinkList*p=L;int i=0; while(p->next!=NULL)

数据结构实验报告——顺序表链表的实现

课程名称:数据结构任课教师: 实验题目:线性表的基本操作 实验环境: Visual C++ 6.0 实验目的: 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的的顺表序和链表,使其具有如下功能: (1)根据指定学生个数,逐个输入学生信息; (2)逐个显示学生表中所有学生的相关信息;

(3)根据姓名进行查找,返回此学生的学号和成绩;

(4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5)给定一个学生信息,插入到表中指定的位置; int createStLink(struct Node *head,struct Node *stu) { struct Node *p6,*p7,*p8; p7=head; p6=stu; if(head==NULL) { head=p6;p6->next=NULL; } else { //如果链表为空则在头结点创建信息while(p6->num > p7->num && p7->next!=NULL)

{ p8=p7; p7=p7->next; } if(p6->num<=p7->num) { if(head==p7) head=p6; else p8->next=p6; p6->next=p7; } else { p7->next=p6;p6->next=NULL; } } N++; return 1; } int main() { struct Node *H,*stud; char M; int num1; H=initlist(); (6)删除指定位置的学生记录;

过程控制试题库

过程控制期末试题库 一、填空题(本题共计10分,包括3小题,10个填空,每空1分) 1.一般一个简单控制系统由(检测/变送)装置、(被控对象)、(调节)器和(执行)机构组成。 2.过程控制系统常用的参数整定方法有:(经验法)、(衰减曲线法)、(稳定边界法/临界比例度法)和(响应曲线法)。 3.在PID调节器中,调节器的Kc越大,表示调节作用(越强),Ti值越大,表示积分作用(减弱),Td值越大表示微分作用(增强)。 4.常见的过程计算机控制系统分为下列几种典型形式:(操作指导控制系统)、直接数字控制系统、(监督计算机控制系统)、(集散控制系统)和现场总线控制系统。 5.在闭环控制系统中,根据设定值的不同形式,又可分为定值控制系统,随动控制系统和程序控制系统。 1)定值控制系统 特点:设定值是(固定不变); 作用:保证在(扰动)作用下使被控变量始终保持在设定值上。 2)随动控制系统 特点:设定值是一个(变化量); 作用:保证在各种条件下系统的输出(及时跟踪设定值变化)。 3)程序控制系统 特点:设定值是一个(按一定时间程序变化的时间函数); 作用:保证在各种条件下系统的输出(按规定的程序自动变化)。 6.串级控制系统能迅速克服进入(副)回路的扰动,改善(主)控制器的广义对象特性,容许(副)回路内各环节的特性在一定的范围内变动而不影响整个系统的控制品质。 7.定值控制系统是按(偏差)进行控制的,而前馈控制是按(扰动)进行控制的;前者是(闭)环控制,后者是(开)环控制。 二、选择题(本题共计10分,包括5小题,每题2分) 1.由于微分调节规律有超前作用,因此调节器加入微分作用主要是用来(C): A.克服调节对象的惯性滞后(时间常数T),容量滞后τc和纯滞后τ0. B.克服调节对象的纯滞后τ0. C.克服调节对象的惯性滞后(时间常数T),容量滞后τc. 2.定值调节是一种能对(A )进行补偿的调节系统。 A.测量与给定之间的偏差 B.被调量的变化 C.干扰量的变化 D. 设定值的变化 3.定值调节系统是(X)环调节,前馈系统是(X)环调节( B )。

实验三四 链表的实现和应用

江南大学物联网工程学院上机报告
课程名称 班 级 数据结构 上机名称 姓 名 链表的实现和应 用 上机日期 学 号 2016.3.11 上机报告要求 1.上机名称 2.上机要求 3.上机环境 4.程序清单(写明运行结果) 5.上机体会
1.上机名称
链表的实现和应用
2.上机要求
⑴定义线性表的链式存储表示; ⑵基于所设计的存储结构实现线性表的基本操作; ⑶编写一个主程序对所实现的线性表进行测试; ⑷线性表的应用:①设线性表 L1和 L2分别代表集合 A 和 B,试设计算法求 A 和 B 的并集 C,并用线 性表 L3代表集合 C;②设线性表 L1和 L2中的数据元素为整数,且均已按值非递减有序排列,试 设计算法对 L1和 L2进行合并,用线性表 L3保存合并结果,要求 L3中的数据元素也按值非递减 有序排列。 ⑸设计一个一元多项式计算器,要求能够:①输入并建立多项式;②输出多项式;③执行两个多项式 相加;④执行两个多项式相减;⑤(选做)执行两个多项式相乘。
3.上机环境
Visual C++ 6.0
4.程序清单(写明运行结果)
(1) #include #include typedef int datatype; typedef struct node { datatype data; struct node *next; }LinkList; LinkList *CREATLISTF(LinkList *L,int n) { intnum,i; LinkList *head,*s,*r; head=L; r=head; head->next=NULL;

实验1顺序表和链表基本操作(给学生)

实验一、二:线性表的应用 班级学号姓名 一、实验预备知识 1 复习C++中编写函数的相关内容。 2 复习如何用主函数将多个函数连在一起构成一个C++完整程序。 二、实验目的 1 掌握线性表的顺序和链式存储结构 2 熟练运用线性表在顺序存储方式下的初始化、创建、输出、插入和删除运算 3 熟练运用线性表在链式存储方式下的创建、输出、插入和删除运算 三、实验要求 1 编写初始化并创建线性表和输出线性表的算法。 2 编写对线性表插入和删除运算算法,要判断位置的合法性和溢出问题。 3 编写一个主函数,将上面函数连在一起,构成一个完整的程序。 4将实验源程序调试并运行,写出输入、输出结果,并对结果进行分析。 四、实验步骤 顺序表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.初始化并建立顺序表。 3.编写顺序表输出算法。(内存中开辟的单元数为8) 4.依次插入3,21,15三个数,分别插入在第4,6和2位置,每插入一次都要输出一次顺序表。 5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次顺序表。 单链表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.建立一个带表头结点的单链表(前插入法和尾插入法都可以)。 3.编写单链表输出算法。 4.依次插入3,21,15三个数,分别插入在第4,6和12位置,每插入一次都要输出一次单链表。 5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次单链表。 五、实验结果 1.给出程序清单及输入/输出结果。 2.实验过程中遇到的问题、解决方法及心得体会。

单链表的基本操作 C语言课程设计

课程设计(论文) 题目名称单链表的基本操作 课程名称C语言程序课程设计 学生姓名 学号 系、专业信息工程系、网络工程专业 指导教师成娅辉 2013年6月6 日

目录 1 前言 (3) 2 需求分析 (3) 2.1 课程设计目的 (3) 2.2 课程设计任务 (3) 2.3 设计环境 (3) 2.4 开发语言 (3) 3 分析和设计 (3) 3.1 模块设计 (3) 3.2 系统流程图 (4) 3.3 主要模块的流程图 (6) 4 具体代码实现 (9) 5 课程设计总结 (12) 5.1 程序运行结果 (12) 5.2 课程设计体会 (12) 参考文献 (13) 致谢 (13)

1 前言 我们这学期学习了开关语句,循环语句、链表、函数体、指针等的应用,我们在完成课程设计任务时就主要用到这些知识点,本课题是单链表的简单操作,定义四个子函数分别用来创建链表、输出链表、插入数据以及删除数据,主函数中主要用到开关语句来进行选择调用哪个子函数,下面就是课程设计的主要内容。 2 需求分析 2.1 课程设计目的 学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。 2.2 课程设计任务 输入一组正整数,以-1标志结束,用函数实现:(1)将这些正整数作为链表结点的data域建立一个非递减有序的单链表,并输出该单链表;(2)往该链表中插入一个正整数,使其仍保持非递减有序,输出插入操作后的单链表;(3)删除链表中第i个结点,输出删除操作后的单链表,i从键盘输入。 2.3 设计环境 (1)WINDOWS 7系统 (2)Visual C++ 2.4 开发语言 C语言 3 分析和设计 3.1 模块设计 定义链表结点类型struct node表示结点中的信息,信息包括数据域data(用于存放结点中的有用数据)以及指针域next(用于存放下一个结点的地址),并将链表结点类型名改为NODE。如下所示:

(数据结构C语言版)顺序表和单链表的逆置

} 实验 1-1 顺序表的逆置操作 程序原码 // 创建顺序表,确定元素个数,插入各个元素,逆置列表。 #include #define max_list_size 100 //定义给顺序表分配空间大小 typedef struct{ int *elem; int length; }list_node; //指向顺序表首地址的结构体单元 list_node L; // 这里使用了全局变量,在所有的函数里可以随意修改其值 int list[max_list_size]; void init(); void inversion(); void creat(); void display(); //************* 主函数 ****************** int main() { init(); creat(); printf("\n 您输入的顺序表的结点数 : \n"); display(); inversion(); printf("\n 倒置顺序表的结点数 : \n"); display(); void init() { L.elem = (int *) malloc (max_list_size * sizeof(int) ); if (! L.elem) { printf(" 顺序表已满 "); exit(-1); } L.length = 0; #include #include // 初始化操作 // 倒置部分 // 建表部分 // 显示部分 //* ************ 初始化操作分配空间 ******************

过程控制试题库

过程控制试题库. 《过程控制》试题库 第1-2章试题 单选题 1.生产过程中引起被控量偏离其给定值的各种

因素称为()。答案 B A.被控量 B.扰动 C.控制量 D.给定值 当被控量受到扰动偏离给定值后,使被控量恢 2. 复为给定值所需改变的物理量称为 ()。答案 C A.被控量 B.扰动 C.控制量 D.给定值 自动控制系统按照给定值进行分类,可以分

成:3. ()、程序控制系统和随动控制系统。B .闭环控制系统A .定值控制系统B C.开环控制系统D.简单控制系统自动控制系 统按照给定值进行分类,可以分成:4. 定值控制系统、()和随动控制系统。B A.闭环控制系统.程序控制系统B C.开环控制系统D.简单控制系统自动控制系统按照给定值进行分类,可以分 5.成:定值 控制系统、程序控制系统和()。B .闭环控制系统A. B.随动控制系统 C.开环控制系统 D.简单控制系统 6.给定值在系统工作过程中保持不变,从而使被控量保持恒定,这样的系统称为 ()。D

A .开环控制系统 B .程序控制系统 C .随动控制系统 定值控制系统 .D 控制系统的给定值是时间的确定函数,这样的7.系统称为( )。 B A .开环控制系统 B .程序控制系统 .随动控制系统 C 定值控制系统 D . 控制系统的给定值按事先不确定的随机因素8.改变,这样的系统称为( )。C .开环控制系统A .程序控制系统B .随动控制系统C 定值控制系统 .D 自动控制系统按照结构进行分类,可以分成:9.( )、开环控制系统和复合控制系统。

B A.开环控制系统B.闭环控制系统.复合控制系统C D.随动控制系统自动控制系统按照结构进行分类,可以分成:10.闭环控制系统、()和复合控制系统。A A.开环控制系统.闭环控制系统B. C.复合控制系统 D.随动控制系统 自动控制系统按照结构进行分类,可以分成:11.闭环控制系统、开环控制系统和()。C A.开环控制系统.闭环控制系统B .复合控制系统C .随动控制系统D()

单链表的建立及其基本操作的实现(完整程序)

#include "stdio.h"/*单链表方式的实现*/ #include "malloc.h" typedef char ElemType ; typedef struct LNode/*定义链表结点类型*/ { ElemType data ; struct LNode *next; }LNode,*LinkList;/*注意与前面定义方式的异同*/ /*建立链表,输入元素,头插法建立带头结点的单链表(逆序),输入0结束*/ LinkList CreateList_L(LinkList head) { ElemType temp; LinkList p; printf("请输入结点值(输入0结束)"); fflush(stdin); scanf("%c",&temp); while(temp!='0') { if(('A'<=temp&&temp<='Z')||('a'<=temp&&temp<='z')) { p=(LinkList)malloc(sizeof(LNode));/*生成新的结点*/ p->data=temp; p->next=head->next; head->next=p;/*在链表头部插入结点,即头插法*/ } printf("请输入结点值(输入0结束):"); fflush(stdin); scanf("%c",&temp); } return head; } /*顺序输出链表的内容*/ void ListPint_L(LinkList head) { LinkList p; int i=0; p=head->next; while(p!=NULL) { i++; printf("单链表第%d个元素是:",i);

实验1顺序表和链表基本操作(学生)

实验一线性表运算的实现 班级学号姓名 一、实验预备知识 1.复习C中函数的相关内容。 2.复习如何用主函数将多个函数连在一起构成一个C完整程序。 3.复习多文件结构。 二、实验目的 1.掌握线性表的顺序和链式存储结构 2.熟练运用线性表在顺序存储方式下的初始化、创建、输出、插入和删除运算 3.熟练运用线性表在链式存储方式下的创建、输出、插入和删除运算 三、实验要求 1.编写初始化并创建线性表和输出线性表的算法。 2.编写对线性表插入和删除运算算法,要判断位置的合法性和溢出问题。 3.编写有序表的插入和删除运算算法。 4.编写一个主函数,将上面函数连在一起,构成一个完整的程序。 5.将实验源程序调试并运行,写出输入、输出结果,并对结果进行分析。 四、实验内容 顺序表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.初始化并建立顺序表。(开辟的存储空间大小为8) 3.编写顺序表输出算法。 4.依次插入3,21,15三个数,分别插入在第4,6和2位置,每插入一次都要输出一次顺序表。 5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次顺序表。 6.编写一个排序算法,对线性表中元素从小到大排列。 7.向有序表分别插入20和50,插入后表仍然有序。(修改开辟的存储空间大小为15) 单链表实验内容: 1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。 2.建立一个带表头结点的单链表(前插入法和尾插入法都可以)。 3.编写单链表输出算法。 4.依次插入3,21,15三个数,分别插入在第4,6和12位置,每插入一次都要输出一次单链表。 5.删除第5,第3和第12个位置上的元素,每删除一个元素都要输出一次单链表。 6.编写一个排序算法,对线性表中元素从小到大排列。 7.分别删除值为25和42的元素,删除后表仍然有序。 五、实验结果 给出程序清单及输入/输出结果 六、总结 1.实验过程中遇到的问题及解决方法 2.收获

过程控制复习题

过程控制复习题 一、填空题 1.过程控制系统由测量元件与变送器、控制器(调节器)、执行器(调节阀)和被控对象(过程)等环节组成。 2. 按系统的结构特点,过程控制系统可分为反馈控制系统、前馈控制系统、前馈—反馈控制系统(复合控制系统) 3.按给定信号的特点,过程控制系统可分为定值控制系统、随动控制系统、程序控制系统等。 4.过程控制系统的性能可从稳定性、快速性、准确度三个方面来说明。评价控制性能好坏的质量指标,通常采用的两种质量指标:系统过渡过程的性能指标(时域控制性能指标)和偏差积分性能指标(积分性能指标),积分指标是采用偏差与时间的某种积分关系作为衡量系统质量的准则。 5.过渡过程的性能指标是用阶跃信号作用下控制系统的输出响应曲线表示,它包括余差(静态偏差)、衰减比n、最大偏差A与超调量、回复时间(过渡时间)t、峰值时间tp和振荡周期 T等。对于随动控制系统,常用超调量这个指标来衡量被控参数偏离给定值的程度。 6.衰减比n是衡量系统过渡过程稳定性的一个动态指标。n<l表示系统是不稳定的,振幅愈来愈大;n=1表示为等幅振荡;n=4表示系统为4:1的衰减振荡。 7.建立被控过程数学模型的方法有:解析法(机理演绎法、机理分析法)、实验辩识法(系统辨识与参数估计法)和混合法 8. 按结构形式不同,自动化仪表可分为基地式仪表、单元组合式仪表、组件组装式仪表,其中单元组合式仪表是将整套仪表划分成能独立实现一定功能的若干单元,各单元之间采用统一信号进行联系。其中QDZ-Ⅲ型仪表采用的标准信号是20~100kPa。 9.按能源形式不同,自动化仪表可分:液动仪表、气动仪表、电动仪表及混合仪表,其中气动仪表的特点是性能稳定、可靠性高、具有本质安全防爆性能、不受电磁干扰、结构简单、维护方便。 10. 检测仪表是指检测元件(敏感元件或传感器)、变送器及显示装置的统称。 11.DDZ-Ⅲ型仪表采用的标准信号是1-5V或4-20mA,QDZ-Ⅲ型仪表采用的标准信号是 20~100kPa。 12. Cu50热电阻是指在0℃时铜电阻有阻值为50欧 13.热电偶测温的关键是要使冷端温度恒定。IEC对已经被国际公认的7种热电偶制定了国际标准,称为标准热电偶,其中最常用的有 S 、 B 、 K 三种。 14. DDZ-Ⅲ型差压变送器是以力矩平衡原理工作的,其的作用是将被测压力、流量等过程参数变换成4~20mADC输出信号,以便实现集中检测或自动控制。 15.热电阻Pt100是指在0℃时铂电阻为100欧 16. 变送器的发展趋势:微型化、数字化、智能化和虚拟化。 17.调节器的作用是将测量信号与给定值比较产生偏差信号,然后按一定的运算规律产生输出信号,推动执行器,实现对生产过程的自动控制。 18. 执行器的作用是接受调节器的控制信号,改变操纵变量(控制变量),使生产过程按预定要求正常进行。执行器一般安装在生产现场直接与介质接触 19.执行器的执行机构是指根据调节器控制信号产生推力或位移的装置;执行器的调节机构是根据执行机构输出信号去改变能量或物料输送量的装置,通常指调节阀。

数据结构单链表、双链表的逆置算法

数据结构与算法 的课程设计 课程设计题目:数据结构的逆置算法 院系名称:信息技术学院 专业(班级):计算机2班 姓名: 学号: 指导教师:

实验内容:分别用一维数组,单链表,双链表实现逆置 (一)使用一维数组实现逆置 1.需求分析:定义一个一维数组(整型),用for语句实现循环,给数组元素赋值,并将 数组元素逆序输出。 2.详细设计: main() { int a[3],i; /*定义元素个数为3的一维数组*/ for(i=0;i<3;i++) scanf("%d",&a[i]); for(i=2;i>=0;i--) printf("%d ",a[i]); getch(); } 3.运行及调试: 4.附录: #include void main() { int a[3],i; /*定义一维数组*/ for(i=0;i<3;i++) scanf("%d",&a[i]); for(i=2;i>=0;i--) printf("%d ",a[i]); getch(); } (二)单链表实现逆置 1.需求分析:创建一个单链表并实现逆序输出 2.详细设计:定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也都写出伪码算法。 (1)单链表的定义 typedef struct node

{ int data;/*数据域为整型*/ struct node* next; /*定义结点的指针域*/ }LinkList;/*数据结点*/ (2)头插法建立单链表 Tnode *CreatList() { Tnode *head; /*头指针*/ LinkList *p;/*工作指针/ int ip; head=(Tnode *)malloc(sizeof(Tnode)); head->next=NULL;/*链表开始为空*/ printf("please input the number:\n"); scanf("%d",&ip); /*向链表中添加元素*/ while(ip!=000) { p=(LinkList *)malloc(sizeof(LinkList));/*生成新结点*/ p->data=ip; /*将值赋给新生结点*/ p->next=head->next; head->next=p; scanf("%d",&ip); } if(ip==000) /*当输入的数值为000时结束*/ printf("\nthe ip is end!\n\n"); return head; } (3)读取链表中的数据 void ReadList(Tnode *head) { LinkList *p; p=head->next; while(p) { printf("%d ",p->data); p=p->next; } printf("\n"); } (4)链表的倒置 void ExchangeList(Tnode *head) { LinkList *r,*s; r=head->next; head->next=NULL; while(r) { s=r->next; r->next=head->next; head->next=r; r=s;

相关文档
最新文档