文档库 最新最全的文档下载
当前位置:文档库 › 链表 习题

链表 习题

链表  习题
链表  习题

1、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B )。

A、O(1)

B、O(n)

C、O(n^2)

D、O(log2n)

2、(D )适合作为经常在首尾两端操作线性表的存储结构。

(A)顺序表

(B)单链表

(C)循环链表

(D)双向链表

3.在一个单链表HL中,若要向表头插入一个自由指针p指向的结点,则执行 B 。

A HL=p;p->next=HL;

B p=next=HL; HL=p;

C p->next=HL; p=HL;

D p->next=HL->next;HL->next=p;

4.在一个单链表HL中,若要在指针q所指结点的后面插入一个自由指针p所指向的结点,则执行__D___。

A q->next=p->next;p->next=q;

B p->next=q->next;q=p;

C q->next=p->next;p->next=q

D p->next=q->next;q->next=p;

5.在一个单链表HL中,若要删除由指针q所指向结点的后继结点,则执行 C 。

A p=q->next;p->next=q->next;

B p=q->next;q->next=p;

C p=q->next;q->next;q->next=q;

D q->next=q=->next->next;q->next=q;

6、非空的循环单链表head的尾结点(由p所指向)满足(C )。

A、P->next ==NULL

B、P==NULL

C、P->next==head

D、p==head

7、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B)。

A、o(1)

B、o(n)

C、o(n2)

D、o(nlogn)

二、填空题

1. 在线性表的单链接存储结构中,每个结点包含有两个域,一个叫值,另一个叫指针域。

2.在循环单链接表中,最后一个结点的指针域指向表头结点。

3.在双向链接表中每个结点包含有两个针域,一个指向其前驱

结点,另一个指向其后继结点。

4.在循环双向链接表中表头结点的左指针域指向表尾结点,最后一个结点的右指针域指向表头结点。

5.在以HL为表头指针的带表头附加结点的单链接表中,链表为空的条件分别为。

6、在一个单链表中的P所指向节点之前插入一个S所指节点时,可执行如下操作:

1)S->next=____;

2)P->next=s;

3) t=P->data;

4)p->data=____;

5)s->data=____;

7、在一个单链表中删除P所指节点时,应该执行以下操作:

1)q=p->next;

2)p->data=p->next->data;

3)p->next=____;

4)Free(q);

8、在循环双链表的p所指结点之后插入s所指结点的操作是()____________________________________________________

9、编写一个函数将一个线性表L(有Len个元数且任何元数均不为0)分拆成两个线性表,使L中大于0的元数存放在A中,小于0的元数存放在B中。

B D B D C

C B

值指针表头前驱后继表尾表头

HL->next==NULL

HL->next==HL

8、s->left=p;

s->right=p->right;

p->right->left =s;

p->right=s;

数据结构—链表应用能力测评

任务: 编写一个能向表尾插入结点,并输出链表中所有数据元素的小程序

#ifndef _LINKLIST #define _LINKLIST #include using namespace std ; struct node { int data ; struct node *next ; }; typedef struct node *PLIST; typedef struct node NODE; /*创建链表,并初始化链表元素*/ PLIST createList_link() { PLIST head ,tail ,temp; int elem = -1; head = new NODE; //初始化头结点 if( head == NULL) { cout<<"分配空间失败,链表创建失败"<next = NULL; tail = head ; while(1) { cin >> elem ; if(elem == 0 ) break ; temp = new NODE ; if(temp == NULL) { cout<<"分配空间失败,链表创建失败"<data = elem ; temp->next = NULL ; tail->next = temp ; tail = temp; } return head ;

} void printList_link(PLIST head ) { /*在此处完成任务,输出head为表头的单链表数据元素*/ //begin PLIST p =new NODE; p=head->next; while(p){ printf("%d ",p->data); p=p->next; } //end } void insertDataTail(PLIST head , int insData ) { /*在此处完成任务,在head为表头的单链表表尾插入数据元素insData*/ //begin PLIST p; p=head->next; while(p->next!=NULL){ p=p->next; } PLIST q = new NODE; //初始化结点 p->next=q; q->data=insData; q->next=NULL; //end } #endif

历年链表考题及答案

历年链表考题及答案 [2005秋II.14] 设已建立了两条单向链表,这两链表中的数据已按从小到大的次序排好,指针h1和h2分别指向这两条链表的首结点。链表上结点的数据结构如下: struct node{ int data; node *next; }; 以下函数node *Merge(node *h1, node *h2)的功能是将h1和h2指向的两条链表上的结点合并为一条链表,使得合并后的新链表上的数据仍然按升序排列,并返回新链表的首结点指针。 算法提示:首先,使newHead和q都指向首结点数据较小链表的首结点,p指向另一链表首结点。其次,合并p和q所指向的两条链表。在q不是指向链尾结点的情况下,如果q 的下一个结点数据小于p指向的结点数据,则q指向下一个结点;否则使p1指向q的下一个结点,将p指向的链表接到q所指向的结点之后,使q指向p所指向的结点,使p指向p1所指向的链表。直到p和q所指向的两条链表合并结束为止。注意,在合并链表的过程中,始终只有两条链表。 [函数] (4分) node * Merge(node *h1, node *h2) { node *newHead, *p, *p1; // 使newHead和q指向首结点数据较小链表的首结点,p指向另一链表首结点if( (27) ) { newHead=h1; p=h2; } // h1->datadata else { newHead=h2; p=h1; } node *q=newHead; // 合并两条链表 while( q->next) { if( q->next->data < p->data ) (28) ; // q=q->next else { (29) ; // p1=q->next q->next=p; q=p; p=p1; } } q->next=p; (30) ; // return newNead } [2005春II.11] 设已建立一条单向链表,指针head指向该链表的首结点。结点的数据结构如下: struct Node{ int data; Node *next; }; 以下函数sort(Node *head)的功能是:将head所指向链表上各结点的数据按data值从小

宏观经济学思考题及参考答案

宏观经济学思考题及参考答案(1) 第四章 基本概念:潜在GDP,总供给,总需求,AS曲线,AD曲线。 思考题 1、宏观经济学的主要目标是什么?写出每个主要目标的简短定义。请详细解释 为什么每一个目标都十分重要。 答:宏观经济学目标主要有四个:充分就业、物价稳定、经济增长和国际收支平衡。 (1)充分就业的本义是指所有资源得到充分利用,目前主要用人力资源作为充分就业的标准;充分就业本不是指百分之百的就业,一般地说充分就业允许的失业范畴为4%。只有经济实现了充分就业,一国经济才能生产出潜在的GDP,从而使一国拥有更多的收入用于提高一国的福利水平。 (2)物价稳定,即把通胀率维持在低而稳定的水平上。物价稳定是指一般物价水平(即总物价水平)的稳定;物价稳定并不是指通货膨胀率为零的状态,而是维持一种能为社会所接受的低而稳定的通货膨胀率的经济状态,一般指通货膨胀率为百分之十以下。物价稳定可以防止经济的剧烈波动,防止各种扭曲对经济造成负面影响。 (3)经济增长是指保持合意的经济增长率。经济增长是指单纯的生产增长,经济增长率并不是越高越好,经济增长的同时必须带来经济发展;经济增长率一般是用实际国民生产总值的年平均增长率来衡量的。只有经济不断的增长,才能满足人类无限的欲望。 (4)国际收支平衡是指国际收支既无赤字又无盈余的状态。国际收支平衡是一国对外经济目标,必须注意和国内目标的配合使用;正确处理国内目标与国际目标的矛盾。在开放经济下,一国与他国来往日益密切,保持国际收支的基本平衡,才能使一国避免受到他国经济波动带来的负面影响。 3,题略 答:a.石油价格大幅度上涨,作为一种不利的供给冲击,将会使增加企业的生产成本,从而使总供给减少,总供给曲线AS将向左上方移动。 b.一项削减国防开支的裁军协议,而与此同时,政府没有采取减税或者增加政府支出的政策,则将减少一国的总需求水平,从而使总需求曲线AD向左下方移动。 c.潜在产出水平的增加,将有效提高一国所能生产出的商品和劳务水平,从而使总供给曲线AS向右下方移动。 d.放松银根使得利率降低,这将有效刺激经济中的投资需求等,从而使总需求增加,总需求曲线AD向右上方移动。 第五章 基本概念:GDP,名义GDP,实际GDP,NDP,DI,CPI,PPI。 思考题: 5.为什么下列各项不被计入美国的GDP之中? a优秀的厨师在自己家里烹制膳食; b购买一块土地; c购买一幅伦勃朗的绘画真品; d某人在2009年播放一张2005年录制的CD所获得的价值; e电力公司排放的污染物对房屋和庄稼的损害;

数据结构 单链表详解

数据结构的概念: 数据的逻辑结构+ 数据的存储结构+ 数据的操作; 数据的数值:=====》数据===》数值型数据整形浮点数ASCII 非数值型数据图片声音视频字符 =====》数据元素=====》基本项组成(字段,域,属性)的记录。 数据的结构: 逻辑结构 ----》线性结构(线性表,栈,队列) ----》顺序结构 ----》链式结构 ----》非线性结构(树,二叉树,图) ----》顺序结构 ----》链式结构 存储结构 -----》顺序存储 -----》链式存储 -----》索引存储 -----》哈希存储==散列存储 数据的操作: 增 删 改 查 DS ====》数据结构===》DS = (D,R); 数据结构中算法: 1、定义:有穷规则的有序集合。 2、特性: 有穷性 确定性

输入 输出 3、算法效率的衡量 时间复杂度计算===》算法中可执行依据的频度之和,记为:T(n)。 是时间的一种估计值不是准确值。 计算结果的分析:1 将最终结果的多项式中常数项去掉 2 只保留所有多项式中最高阶的项 3 最后的最高阶项要去掉其常数项 时间复杂度的量级关系: 常量阶====》对数阶===》线性阶===》线性对数阶====》平方阶===》立方阶===》指数阶 以上关系可以根据曲线图来判断算法对时间复杂度的要求 空间复杂度计算====》算法执行过程中所占用的存储空间的量级,记为:D(n)。 计算方法是在运行过程中申请的动态内存的量级计算。 ///////////////////////////////////////////////////////////////////////////////////////////////// 线性表 顺序存储====》顺序表(数组) 链式存储====》单链表 特征:对于非空表,a0是表头没有前驱。 an-1 是表尾没有后继 ai的每个元素都有一个直接前驱和直接后继 基本操作:创建表=====》增加元素====》删除元素====》改变元素值====》查询元素 1、顺序表的操作 1.1 创建顺序表=====》定义个指定类型的数组====》int a[100] ={0};

线性表练习题(答案)

第2章线性表 一选择题 下列程序段的时间复杂度为( C )。 for( int i=1;i<=n;i++) for( int j=1;j<= m; j++) A[i][j] = i*j ; A. O(m2) B. O(n2) C. O(m*n) D. (m+n) 下面关于线性表的叙述中,错误的是哪一个?(B ) A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 线性表是具有n个( C )的有限序列(n>0)。 A.表元素B.字符C.数据元素D.数据项 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。 A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。 A.单链表B.仅有头指针的单循环链表 C.双链表D.仅有尾指针的单循环链表 设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( D )最节省时间。A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表 若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用( D )存储方式最节省运算时间。 A.单链表B.双链表C.单循环链表D.带头结点的双循环链表 链表不具有的特点是( B ) A.插入、删除不需要移动元素B.可随机访问任一元素 C.不必事先估计存储空间D.所需空间与线性长度成正比 下面的叙述不正确的是(B,C ) A.线性表在链式存储时,查找第i个元素的时间同i的值成正比 B. 线性表在链式存储时,查找第i个元素的时间同i的值无关 C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比 D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )(1<=i<=n+1)。 A. O(0) B. O(1) C. O(n) D. O(n2) 对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为(C )。 A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1) 线性表(a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为( C )A.O(i)B.O(1)C.O(n)D.O(i-1) 循环链表H的尾结点P的特点是(A )。 A.P->next=H B.P->next= H->next C.P=H D.P=H->next 完成在双循环链表结点p之后插入s的操作是(D );

(完整版)思考题及习题2参考答案

第2章思考题及习题2参考答案 一、填空 1. 在AT89S51单片机中,如果采用6MHz晶振,一个机器周期为。答:2μs 2. AT89S51单片机的机器周期等于个时钟振荡周期。答:12 3. 内部RAM中,位地址为40H、88H的位,该位所在字节的字节地址分别为 和。答:28H,88H 4. 片内字节地址为2AH单元最低位的位地址是;片内字节地址为A8H单元的最低位的位地址为。答:50H,A8H 5. 若A中的内容为63H,那么,P标志位的值为。答:0 6. AT89S51单片机复位后,R4所对应的存储单元的地址为,因上电时PSW= 。这时当前的工作寄存器区是组工作寄存器区。答:04H,00H,0。 7. 内部RAM中,可作为工作寄存器区的单元地址为 H~ H。答:00H,1FH 8. 通过堆栈操作实现子程序调用时,首先要把的内容入栈,以进行断点保护。调用子程序返回指令时,再进行出栈保护,把保护的断点送回到,先弹出的是原来中的内容。答:PC, PC,PCH 9. AT89S51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89S51单片机的PC是16位的,因此其寻址的范围为 KB。答:64 10. AT89S51单片机复位时,P0~P3口的各引脚为电平。答:高 11. AT89S51单片机使用片外振荡器作为时钟信号时,引脚XTAL1接,引脚XTAL2的接法是。答:片外振荡器的输出信号,悬空 12. AT89S51单片机复位时,堆栈指针SP中的内容为,程序指针PC中的内容为 。答:07H,0000H 二、单选 1. 程序在运行中,当前PC的值是。 A.当前正在执行指令的前一条指令的地址 B.当前正在执行指令的地址。 C.当前正在执行指令的下一条指令的首地址 D.控制器中指令寄存器的地址。 答:C 2. 判断下列哪一种说法是正确的?

数据结构课程设计单链表

目录 1 选题背景 (2) 2 方案与论证 (3) 2.1 链表的概念和作用 (3) 2.3 算法的设计思想 (4) 2.4 相关图例 (5) 2.4.1 单链表的结点结构 (5) 2.4.2 算法流程图 (5) 3 实验结果 (6) 3.1 链表的建立 (6) 3.2 单链表的插入 (6) 3.3 单链表的输出 (7) 3.4 查找元素 (7) 3.5 单链表的删除 (8) 3.6 显示链表中的元素个数(计数) (9) 4 结果分析 (10) 4.1 单链表的结构 (10) 4.2 单链表的操作特点 (10) 4.2.1 顺链操作技术 (10) 4.2.2 指针保留技术 (10) 4.3 链表处理中的相关技术 (10) 5 设计体会及今后的改进意见 (11) 参考文献 (12) 附录代码: (13)

1 选题背景 陈火旺院士把计算机60多年的发展成就概括为五个“一”:开辟一个新时代----信息时代,形成一个新产业----信息产业,产生一个新科学----计算机科学与技术,开创一种新的科研方法----计算方法,开辟一种新文化----计算机文化,这一概括深刻影响了计算机对社会发展所产生的广泛而深远的影响。 数据结构和算法是计算机求解问题过程的两大基石。著名的计算机科学家P.Wegner指出,“在工业革命中其核心作用的是能量,而在计算机革命中其核心作用的是信息”。计算机科学就是“一种关于信息结构转换的科学”。信息结构(数据结构)是计算机科学研究的基本课题,数据结构又是算法研究的基础。

2 方案与论证 2.1 链表的概念和作用 链表是一种链式存储结构,链表属于线性表,采用链式存储结构,也是常用的动态存储方法。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 以“结点的序列”表示线性表称作线性链表(单链表) 单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。 因此,查找第 i 个数据元素的基本操作为:移动指针,比较 j 和 i 单链表 1、链接存储方法 链接方式存储的线性表简称为链表(Linked List)。 链表的具体存储表示为: ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的) ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link)) 注意: 链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。 2、链表的结点结构 ┌───┬───┐ │data │next │ └───┴───┘ data域--存放结点值的数据域 next域--存放结点的直接后继的地址(位置)的指针域(链域) 注意: ①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。 ②每个结点只有一个链域的链表称为单链表(Single Linked List)。

(完整版)第三章单链表题目和答案

第2章自测卷答案 一、填空 1.顺序表中逻辑上相邻的元素的物理位置相互相邻。单链表中逻辑上相邻的元素的物理位置不 相邻。 2.在单链表中,除了首元结点外,任一结点的存储位置由其直接前驱结点值域指示。 3.在n个结点的单链表中要删除已知结点*p,需找到它的地址。 二、判断正误(在正确的说法后面打勾,反之打叉) 1. 链表的每个结点中都恰好包含一个指针。X 2. 链表的物理存储结构具有同链表一样的顺序。X 3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。 X 4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。Y 5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。Y 6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。X 7. 线性表在物理存储空间中也一定是连续的。X 8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。X 9. 顺序存储方式只能用于存储线性结构。X 10. 线性表的逻辑顺序与存储顺序总是一致的。X 三、单项选择题 (A)1. 链接存储的存储结构所占存储空间: (A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 (B)只有一部分,存放结点值 (C)只有一部分,存储表示结点间关系的指针 (D)分两部分,一部分存放结点值,另一部分存放结点所占单元数 (B)2. 链表是一种采用存储结构存储的线性表; (A)顺序(B)链式(C)星式(D)网状 (D)3. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址: (A)必须是连续的(B)部分地址必须是连续的 (C)一定是不连续的(D)连续或不连续都可以 (B)4.线性表L在情况下适用于使用链式结构实现。 (A)需经常修改L中的结点值(B)需不断对L进行删除插入 (C)L中含有大量的结点(D)L中结点结构复杂 (C)5.单链表的存储密度 (A)大于1;(B)等于1;(C)小于1;(D)不能确定

思考题与习题答案

思考题与习题 1 1- 1 回答以下问题: ( 1)半导体材料具有哪些主要特性? (2) 分析杂质半导体中多数载流子和少数载流子的来源; (3) P 型半导体中空穴的数量远多于自由电子, N 型半 导体中自由电子的数量远多于空穴, 为什么它们对外却都呈电中性? (4) 已知温度为15C 时,PN 结的反向饱和电流 I s 10 A 。当温度为35 C 时,该PN 结 的反向饱和 电流I s 大约为多大? ( 5)试比较二极管在 Q 点处直流电阻和交流电阻的大小。 解: ( 1)半导体的导电能力会随着温度、光照的变化或掺入杂质浓度的多少而发生显着改变, 即半导体具 有热敏特性、光敏特性和掺杂特性。 ( 2)杂质半导体中的多数载流子是由杂质原子提供的,例如 供一个自由电子,P 型半导体中一个杂质原子提供一个空穴, 浓度;少数载流子则是由热激发产生的。 (3) 尽管P 型半导体中空穴浓度远大于自由电子浓度,但 P 型半导体中,掺杂的杂质原子因获得一个价电子而变成带负电的杂 质离子(但不能移动),价 电子离开后的空位变成了空穴,两者的电量相互抵消,杂质半导体从总体上来说仍是电中性的。 同理, N 型半导体中虽然自由电子浓度远大于空穴浓度,但 N 型半导体也是电中性的。 (4) 由于温度每升高10 C ,PN 结的反向饱和电流约增大 1倍,因此温度为 35C 时,反向 饱和电流为 (5) 二极管在 Q 点处的直流电阻为 交流电阻为 式中U D 为二极管两端的直流电压, U D U on ,I D 为二极管上流过的直流电流, U T 为温度的 电压当量,常温下 U T 26mV ,可见 r d R D 。 1- 2 理想二极管组成的电路如题 1- 2图所示。试判断图中二极管是导通还是截止,并确定 各电路的输 出电压。 解 理想二极管导通时的正向压降为零, 截止时的反向电流为零。 本题应首先判断二极管的工 作状 态,再进一步求解输出电压。二极管工作状态的一般判断方法是:断开二极管, 求解其端口 电压;若该电压使二极管正偏, 则导通; 若反偏, 则截止。 当电路中有两只或两只以上二极管时, 可分别应用该方法判断每只二极管的工作状态。 需要注意的是, 当多只二极管的阳极相连 (共阳 极接法)时,阴极电位最低的管子将优先导通;同理,当多只二极管的阴极相连(共阴极接法) 时,阳极电位最高的管子将优先导通。 (a) 断开二极管 D ,阳极电位为12V ,阴极电位为6V ,故导通。输岀电压 U O 12V 。 (b) 断开二极管 D 1、D 2, D 1、D 2为共阴极接法,其阴极电位均为 6V ,而D 1的阳极电位 为9V , D 2的阳极电位为5V ,故D 1优先导通,将 D 2的阴极电位钳制在 7.5V ,D 2因反向偏置而 截止。输岀电压 U O 7.5V 。 N 型半导体中一个杂质原子提 因此 多子浓度约等于所掺入的杂质 P 型半导体本身不带电。因为在

数据结构(C语言)单链表的基本操作

实验名称:实验一单链表的基本操作 实验目的 熟练掌握线性表两类存储结构的描述方法。 实验内容 从键盘读入若干个整数,建一个整数单链表,并完成下列操作: (1)打印该链表; (2)在链表中插入一个结点,结点的数据域从键盘读入,打印该链表; (3)在链表中删除一个结点,被删结点的位置从键盘读入,打印该链表; (4)在链表中做查找:从键盘读入要查找的整数,将该整数在链表中的位置打印出来,若要查找的整数不在链表中,返回一个信息。 算法设计分析 (一)数据结构的定义 单链表存储结构定义为: struct Node; typedef struct Node * pnode; struct Node { int info; pnode link; }; typedef struct Node * LinkList; (二)总体设计 程序由主函数、创建单链表函数、链表长度函数、链表打印函数、插入正整数函数、删除函数、查询函数组成。其功能描述如下: (1)主函数:调用各个函数以实现相应功能 int main(void) //主函数 { printf("单链表的基本操作实验:\n"); struct list *pnode; pnode = creat(); //创建 print(pnode); //输出 insert(pnode); //插入 print(pnode); //输出 _delete(pnode); //删除 print(pnode); //输出 _located(pnode); //查找 print(pnode); //输出 return 0 ; } (三)各函数的详细设计: Function1: struct list *creat()//创建链表;

图练习题(答案)

《图》练习题 一、单项选择题 1、在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的度 数之和为( )。 A. s B. s-1 C. s+1 D. 2s 2、在一个具有n个顶点的无向完全图中,所含的边数为( )。 A. n B. n(n-1) C. n(n-1)/2 D. n(n+1)/2 3、在一个无向图中,若两顶点之间的路径长度为k,则该路径上的顶点数为( )。 A. k B. k+1 C. k+2 D. 2k 4、对于一个具有n个顶点的无向连通图,它包含的连通分量的个数为( )。 A. 0 B. 1 C. n D. n+1 5、若一个图中包含有k个连通分量,若要按照深度优先搜索的方法访问所有顶点,则 必须调用( )次深度优先搜索遍历的算法。 A. k B. 1 C. k-1 D. k+1 6、若要把n个顶点连接为一个连通图,则至少需要( )条边。 A. n B. n+1 C. n-1 D. 2n 7、在一个具有n个顶点和e条边的无向图的邻接矩阵中,表示边存在的元素(又称为 有效元素)的个数为( )。 A. n B. n e C. e D. 2e 8、在一个具有n个顶点和e条边的有向图的邻接矩阵中,表示边存在的元素个数为 ( )。 A. n B. n e C. e D. 2 e 9、在一个有向图的邻接表中,每个顶点单链表中结点的个数等于该顶点的( )。 A. 出边数 B. 入边数 C. 度数 D. 度数减1 10、若一个图的边集为{(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)},则从顶点A开始对 该图进行深度优先搜索,得到的顶点序列可能为( )。 A. A,B,C,F,D,E B. A,C,F,D,E,B C. A,B,D,C,F,E D. A,B,D,F,E,C 11、若一个图的边集为{(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)},则从顶点A开始对 该图进行广度优先搜索,得到的顶点序列可能为( )。 A. A,B,C,D,E,F B. A,B,C,F,D,E C. A,B,D,C,E,F D. A,C,B,F,D,E 12、若如下图所示的无向连通图,则从顶点A开始对该图进行广度优先遍历,得到的顶 点序列可能为( )。

管理学思考题及参考答案

管理学思考题及参考答案 第一章 1、什么是管理? 管理:协调工作活动过程(即职能),以便能够有效率和有效果地同别人一起或通过别人实现组织的目标。 2、效率与效果 效率:正确地做事(如何做) 效果:做正确的事(该不该做) 3、管理者三层次 高层管理者、中层管理者、基层管理者 4、管理职能和(或)过程——职能论 计划、组织、控制、领导 5、管理角色——角色论 人际角色:挂名首脑、领导人、联络人 信息角色:监督者、传播者、发言人 决策角色:企业家、混乱驾驭者、资源分配者、谈判者 6、管理技能——技能论 用图表达。 高层管理概念技能最重要,中层管理3种技能都需要且较平衡,基层管理技术技能最重要。 7、组织三特征? 明确的目的 精细的结构 合适的人员 第二章 泰罗的三大实验: 泰罗是科学管理之父。记住3个实验的名称:1、搬运生铁实验,2、铁锹实验,3、高速钢实验 4、吉尔布雷斯夫妇 动作研究之父 管理界中的居里夫妇 5、法约尔的十四原则 法约尔是管理过程理论之父 记住“十四原则”这个名称就可以了。 6、法约尔的“跳板” 图。 7、韦伯理想的官僚行政组织组织理论之父。6维度:劳动分工、权威等级、正式甄选、非个人的、正式规则、职业生涯导向。 8、韦伯的3种权力 超凡的权力 传统的权力 法定的权力。 9、巴纳德的协作系统论 协作意愿 共同目标 信息沟通 10、罗伯特·欧文的人事管理 人事管理之父。职业经理人的先驱 11、福莱特冲突论 管理理论之母 1)利益结合、 2)一方自愿退让、 3)斗争、战胜另一方 4)妥协。 12、霍桑试验 1924-1932年、梅奥 照明试验、继电器试验、大规模访谈、接线试验 13、朱兰的质量观 质量是一种合用性 14、80/20的法则 多数,它们只能造成少许的影响;少数,它们造成主要的、重大的影响。 15、五项修炼 自我超越 改善心智 共同愿景 团队学习 系统思考 第三章 1、管理万能论 管理者对组织的成败负有直接责任。 2、管理象征论 是外部力量,而不是管理,决定成果。 3、何为组织文化 组织成员共有的价值观和信念体系。这一体系在很大程度上决定成员的行为方式。 4、组织文化七维度

数据结构链表代码

#include typedef struct lnode{ int data; lnode *next; }lnode; void initlist(lnode *&head){ head=new lnode; head->next=NULL; }//带头结点空链表的判断条件 /*void initlistn(lnode *&head,int n){ initlist1(head); lnode *s; for(int i=0;i>s->data; s->next=head->next; head->next=s; } }//逆序*/ void initlistn(lnode *&head,int n){ initlist(head); lnode *p=head,*s; for(int i=0;i>s->data; s->next=NULL; p->next=s; p=s; } }//正序 void print(lnode *head){ lnode *p=head->next; while(p){ cout<data<<' '; p=p->next; } cout<next;j++;}

if(!p||j>i-1) return; lnode *s=new lnode; s->data=e; s->next=p->next; p->next=s; }//插入 void deletelist(lnode *&head,int i,int &e){ lnode *p=head; int j=0; while(p->next&&jnext;j++;} if(!p->next||j>i-1) return; lnode *q=p->next; e=q->data; p->next=q->next; }//删除 void main(void){ lnode *head; initlistn(head,10); print(head); inserlist(head,6,200); print(head); int e; deletelist(head,8,e); print(head); }

数据结构与算法问题分析与源代码之单链表

单链表 1 题目编写一个程序,实现链表的各种基本运算,包括:链表操作:初始化链表、输出链表、输出链表长度和释放链表链表元素操作:插入元素、删除元素、输出元素(注意元素的位置) 2 目标熟悉单链表的定义及其基本操作的实现 3 设计思想 链表由多个结点通过next 指针连接成一个完整的数据结构,每个几点包括一个数据域和一个指向下一个结点的next 指针。通过对指针的改写与结点的增减,我们可以实现单链表的插入、删除、输入、输出、求长等操作。 4 算法描述 (1 )初始化链表:输入元素个数n ,分配n 个结点空间,输入元素值,按元素顺序初始化next 指针,使之连接成串,尾指针赋值NULL 。 (2 )输出链表:从表头开始沿next 指针遍历各结点,每次访问结点输出结点数据值,直至next 为空。 (3 )输出链表长度:从表头开始沿next 指针遍历各结点,每次访问结点计数器加一,直至next 为空,返回计数器值。 (4 )释放链表:沿next 指针从前向后依次释放结点,直至next 指空。 (5 )插入元素:指针沿next 指向移动指定位,新分配一个空间并存入数据,其next 赋值为当前指针指向结点的next ,修改当前指针指向结点的next 指向新加结点。 (6 )删除元素:指针沿next 指向移动指定位,修改待删结点的前一结点的next 指针指向待删结点的下一结点,保存数值,释放删除结点。 (7 )输出元素:指针沿next 指向移动指定位,指针指向结点数据区,读出数值返回。 5 程序结构图 6源程序 #i nclude

#i nclude typedef struct LNode { int data; struct LNode *n ext; }LNode,*Li nkList; Lin kList Ini tList_Li nk(L in kList L) { L=(L in kList)malloc(sizeof(LNode)); L->data = 0; L->next = NULL; return L; } void Createlist(L in kList L) { int n; int i; int temp; LinkList T; printf(" 输入链表元素个数:"); scanf("%d",&n); L->data=n; printf(" 输入元素值:\n"); T=L; for (i=n;i>0;i--) { LinkList p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&temp); p->next=T->next; p->data = temp; T->next=p; T=p; L->data++; } printf(" 成功建立链表"); } void DestroyList_Link(LinkList L) { LinkList p = L,q = L; while(p) { p = p->next; free(q);

数据结构复习题及答案

复习题(一) 一.填空题(每空1分,共15分) 1.一个算法的效率可分为___________________效率和___________________效率。 2.__________________是被限定为只能在表的一端进行插入运算,在表的另一端 进行删除运算的线性表。 3.设S=“A;/document/Mary.doc”,则strlen(S)= _______________,“/”的字符定位 的位置为_______________。 4.设数组a[1…60, 1…70]的基地址为2048,每个元素占2个存储单元,若以列 序为主序顺序存储,则元素a[32,58]的存储地址为_______________。 5.一棵深度为6的满二叉树有_______________个分支结点和_______________个 叶子。 6.用5个权值{3, 2, 4, 5, 1}构造的哈夫曼(Huffman)树的带权路径长度 是。 7.设有一稀疏图G,则G采用存储较省空间。 8.快速排序算法是对算法的一种改进。 9.在数据的存放无规律而言的线性表中进行检索的最佳方法 是。 10.大多数排序算法都有两个基本的操作: 和。 11.设要将序列(Q, H, C, Y, P, A, M, S, R, D, F, X)中的关键码按字母序的升序重 新排列,则:快速排序一趟扫描的结果是。 二.选择题(每题2分,共30分) ()1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为: (A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构 ()2. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要

第1章思考题及参考答案

第一章思考题及参考答案 1. 无多余约束几何不变体系简单组成规则间有何关系? 答:最基本的三角形规则,其间关系可用下图说明: 图a 为三刚片三铰不共线情况。图b 为III 刚片改成链杆,两刚片一铰一杆不共线情况。图c 为I 、II 刚片间的铰改成两链杆(虚铰),两刚片三杆不全部平行、不交于一点的情况。图d 为三个实铰均改成两链杆(虚铰),变成三刚片每两刚片间用一虚铰相连、三虚铰不共线的情况。图e 为将I 、III 看成二元体,减二元体所成的情况。 2.实铰与虚铰有何差别? 答:从瞬间转动效应来说,实铰和虚铰是一样的。但是实铰的转动中心是不变的,而虚铰转动中心为瞬间的链杆交点,产生转动后瞬时转动中心是要变化的,也即“铰”的位置实铰不变,虚铰要发生变化。 3.试举例说明瞬变体系不能作为结构的原因。接近瞬变的体系是否可作为结构? 答:如图所示AC 、CB 与大地三刚片由A 、B 、C 三铰彼此相连,因为三铰共线,体系瞬变。设该 体系受图示荷载P F 作用,体系C 点发生微小位移 δ,AC 、CB 分别转过微小角度α和β。微小位移 后三铰不再共线变成几何不变体系,在变形后的位置体系能平衡外荷P F ,取隔离体如图所 示,则列投影平衡方程可得 210 cos cos 0x F T T βα=?=∑,21P 0 sin sin y F T T F βα=+=∑ 由于位移δ非常小,因此cos cos 1βα≈≈,sin , sin ββαα≈≈,将此代入上式可得 21T T T ≈=,()P P F T F T βαβα +==?∞+, 由此可见,瞬变体系受荷作用后将产生巨大的内力,没有材料可以经受巨大内力而不破坏,因而瞬变体系不能作为结构。由上分析可见,虽三铰不共线,但当体系接近瞬变时,一样将产生巨大内力,因此也不能作为结构使用。 4.平面体系几何组成特征与其静力特征间关系如何? 答:无多余约束几何不变体系?静定结构(仅用平衡条件就能分析受力) 有多余约束几何不变体系?超静定结构(仅用平衡条件不能全部解决受力分析) 瞬变体系?受小的外力作用,瞬时可导致某些杆无穷大的内力 常变体系?除特定外力作用外,不能平衡 5. 系计算自由度有何作用? 答:当W >0时,可确定体系一定可变;当W <0且不可变时,可确定第4章超静定次数;W =0又不能用简单规则分析时,可用第2章零载法分析体系可变性。 6.作平面体系组成分析的基本思路、步骤如何? 答:分析的基本思路是先设法化简,找刚片看能用什么规则分析。

数据结构双向链表实战应用(c语言源程序)

#include #include typedef struct nodes { char data; struct nodes *front; struct nodes *next; }*LinkList; int main(void) { int i=0; LinkList head_1=0,head_2=0; LinkList InitList(void);//创建不带头接点的双链表 void OutPutList(LinkList head); LinkList ChangeList(LinkList head,int m);//假如head指向abcde,如输入2,cdeab,如输入-2,则为deabc void FreeList(LinkList head); head_1=InitList(); OutPutList(head_1); printf("请输入想要移动的位数i\n"); scanf("%d",&i); head_2=ChangeList(head_1,i); OutPutList(head_2); FreeList(head_1); return 0;

} LinkList InitList(void) { int i=1; char ch;//判断是否还输入 LinkList head=0,r,t;//r指向新创建的结点,t指向r的前一个结点 head=(struct nodes *)malloc(sizeof(struct nodes)); if(!head) { printf("存储空间分配失败\n"); return 0; } head->front=head; head->next=head; head->data='a'; t=r=head; while(1) { r=(struct nodes *)malloc(sizeof(struct nodes)); if(!r) { printf("存储空间分配失败\n"); return 0; }

数据结构模拟卷(含答案)经典习题培训讲学

数据结构模拟卷(含答案)经典习题

练习题 一、单项选择题 1. 若将数据结构形式定义为二元组(K,R),其中K是数据元素的有限集合,则R是K上( ) A. 操作的有限集合 B. 映象的有限集合 C. 类型的有限集合 D. 关系的有限集合 2. 在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( ) A. n-i+1 B. i C. i+1 D. n-i 3. 若不带头结点的单链表的指针为head,则该链表为空的判定条件是( ) A. head==NULL B. head->next==NULL C. head!=NULL D. head->next==head 4. 引起循环队列队头位置发生变化的操作是( ) A. 出队 B. 入队 C. 取队头元素 D. 取队尾元素 5. 若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则不.可能出现的出栈序列是( ) A. 2,4,3,1,5,6 B. 3,2,4,1,6,5 C. 4,3,2,1,5,6 D. 2,3,5,1,6,4

6. 字符串通常采用的两种存储方式是( ) A. 散列存储和索引存储 B. 索引存储和链式存储 C. 顺序存储和链式存储 D. 散列存储和顺序存储 7. 数据结构是() A.一种数据类型 B.数据的存储结构 C.一组性质相同的数据元素的集合 D.相互之间存在一种或多种特定关系的数据元素的集合 8. 算法分析的目的是() A.辨别数据结构的合理性 B.评价算法的效率 C.研究算法中输入与输出的关系 D.鉴别算法的可读性 9. 在线性表的下列运算中,不.改变数据元素之间结构关系的运算是 () A.插入B.删除 C.排序D.定位10. 下列图示的顺序存储结构表示的二叉树是( )

数据结构C语言版 循环链表表示和实现

数据结构C语言版循环链表表示和实现.txt37真诚是美酒,年份越久越醇香浓烈;真诚是焰火,在高处绽放才愈显美丽;真诚是鲜花,送之于人,手有余香。/* 数据结构C语言版循环链表表示和实现 P35 编译环境:Dev-C++ 4.9.9.2 日期:2011年2月10日 */ #include #include #include typedef int ElemType; // 线性表的单链表存储结构 typedef struct LNode { ElemType data; struct LNode *next; }LNode, *LinkList; // 要好好区分什么是头结点((*L)->next),尾结点(*L),以及第一个结 // 点(*L)->next->next,设立尾指针的单循环链表(头尾相接,即头结点 // 与尾结点是一样的,它们都没数据域. // 构造一个空的循环链表L int InitList_CL(LinkList *L) { // 产生头结点,并使L指向此头结点 *L = (LinkList)malloc(sizeof(struct LNode)); if(!*L) exit(0); // 指针域指向头结点,这样就构成了一个循环,空表循环,*L为表尾 (*L)->next = *L; return 1; } // 销毁循环链表L int DestroyList_CL(LinkList *L) { LinkList q, p = (*L)->next; // p指向头结点 while(p != *L) // 没到表尾,*L为表尾 { q = p->next; free(p);

相关文档