数据结构作业答案(大连理工大学)

合集下载

大连理工19秋《数据结构》在线作业1答案

大连理工19秋《数据结构》在线作业1答案

【奥鹏】大工19秋《数据结构》在线作业1
试卷总分:100 得分:100
一、单选题 (共 10 道试题,共 50 分)
第1题,线性表采用顺序存储结构时,其地址 ( )。

[A.]部分地址必须是连续的
[B.]连续与否均可以
[C.]必须是连续的
[D.]一定是不连续的
正确的答案是:C
第2题,队列操作的原则是( )。

[A.]后进先出
[B.]只能插入
[C.]只能删除
[D.]先进先出
正确的答案是:D
第3题,下述哪一条是顺序存储结构的优点( )。

[A.]插入运算方便
[B.]存储密度大
[C.]可方便地用于各种逻辑结构的存储表示
[D.]删除运算方便
正确的答案是:B
第4题,若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。

[A.]顺序表
[B.]带头结点的双循环链表
[C.]双链表
[D.]单循环链表
正确的答案是:A
第5题,链表不具有的特点是( )。

[A.]插入、删除不需要移动元素
[B.]所需空间与线性长度成正比
[C.]可随机访问任一元素
[D.]不必事先估计存储空间
正确的答案是:C
第6题,一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是( )。

[A.]不确定
[B.]n-i+1。

数据结构作业答案(大连理工大学)

数据结构作业答案(大连理工大学)

数据结构作业答案(大连理工大学)数据结构作业答案入栈和出栈操作是栈这种数据结构最基本的操作,也是我们在日常生活中常常会用到的操作。

本文将为您介绍如何使用Python实现栈的数据结构,以及解答大连理工大学数据结构作业中与栈相关的问题。

一、栈的概念和基本操作栈是一种具有特殊限制的线性表,它只允许在表的一端进行插入和删除操作。

栈遵循先进后出(Last In First Out,LIFO)的原则。

通常,栈顶为允许插入和删除的一端,而另一端则称为栈底。

1.1 栈的初始化在Python中,我们可以使用列表(list)来实现栈的数据结构。

下面的代码演示了如何初始化一个栈:```pythonstack = []```1.2 入栈操作入栈操作是将一个元素添加到栈顶的操作。

在Python中,我们可以使用列表的append()方法来实现入栈操作。

下面的代码演示了如何进行入栈操作:```pythonstack.append(element)```1.3 出栈操作出栈操作是将栈顶元素删除并返回的操作。

在Python中,我们可以使用列表的pop()方法来实现出栈操作。

下面的代码演示了如何进行出栈操作:```pythonelement = stack.pop()```二、栈的应用举例2.1 判断括号匹配一个常见的栈的应用是判断括号是否匹配。

在这个问题中,我们需要使用栈来跟踪括号的开闭情况。

具体的算法如下:①初始化一个空栈。

②遍历字符串中的每个字符。

③如果遇到开括号(例如:'('、'{'、'['),则将其入栈。

④如果遇到闭括号(例如:')'、'}'、']'),则判断栈顶元素是否为相应的开括号,如果不匹配,则返回False。

⑤字符串遍历完成后,如果栈为空,则说明所有括号都匹配,返回True;否则,返回False。

下面是一个基于栈的括号匹配问题的示例代码:```pythondef is_valid_parentheses(s: str) -> bool:stack = []parentheses_map = {')': '(', '}': '{', ']': '['}for char in s:if char in parentheses_map.values():stack.append(char)elif char in parentheses_map.keys():if not stack or parentheses_map[char] != stack.pop():return Falsereturn not stack```2.2 栈的逆序输出另一个栈的常见应用是逆序输出。

最新大连理工大学数据结构(一)上机作业答案——张老师

最新大连理工大学数据结构(一)上机作业答案——张老师
#define ERROR 0
typedef int ElemType;
typedef int Status;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList(LinkList &L,int n){
s->data=m;
s->next=NULL;
p->next=s;
}
}
void ReverseList(LinkList &L){
LNode *p,*q;
if(L->next&&L->next->next){
p=L->next;
q=p->next;
p->next=NULL;
while(q){
p=q;
typedef int Status;
#define LIST_INIT_SIZE 100
#define LISTTINCREMENT 10
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
//创建空顺序表
Status InitList_Sq(SqList &L){
1.将顺序表逆置,要求用最少的附加空间。
参考答案
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0

大连理工数据结构

大连理工数据结构
• {中}考点8:AVL树调整策略【一定要分清并 标注左旋右旋,左右双旋和右左双旋,不 标注或者标注错了可能0分】(必须掌握 112例题)
【去年考的那道题很变态,一直调整调整, 建议不要写得太大,以免纸张不够】
• {易}考点9:堆的初始化、插入、删除的调 整【删除非堆顶元素的时候一定要上下判 断】(必须掌握121页的建堆过程)
编程 有序链表合并【80页 5,6题】
• {易}考点3:栈、队列的应用【选择,填空, 简答?】 一个栈的输入序列为1 2 3 4 5,则下列序列中 不可能是栈的输出序列的是(B) A. 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 2 【或者问有多少种可能,ppt上有公式】
• {易}考点2:链表<插入、删除、查找、合并, 双链表、循环链表的插入、删除>【选择, 填空,编程】
在一个单链表HL中,若要删除由指针q所指 向节点的后继结点,则执行(C)。 A.p = q -> next; p -> next = q –>next; B.p = q -> next; q -> next = p; C.p = q -> next; q -> next = p -> next; D.q ->next = q -> next -> next; q -> next = q; 答案:C
D&A 复习
• 仅供复习参考之用。
• 经验之谈,不是一定会考。 • 个人意愿的指导性复习,与老师无关。 • 此PPT不一定会外流。
• {中}考点1:复杂度分析【选择,填空】 for ( i = 0; i < n; i++ ){ for ( j = 1, sum=a [0]; j <= i; j++ ) sum +=a [j]; cout<<“sum for subarray 0 through”<< i <<“is”<<sum<<endl; } 复杂度:O(n2)

大工19秋《数据结构》在线作业1参考答案

大工19秋《数据结构》在线作业1参考答案

大工19秋《数据结构》在线作业1试卷总分:100 得分:100一、单选题(共10 道试题,共50 分)1.线性表采用顺序存储结构时,其地址( )。

A.部分地址必须是连续的B.连续与否均可以C.必须是连续的D.一定是不连续的答案:C2.队列操作的原则是( )。

A.后进先出B.只能插入C.只能删除D.先进先出答案:D3.下述哪一条是顺序存储结构的优点( )。

A.插入运算方便B.存储密度大C.可方便地用于各种逻辑结构的存储表示D.删除运算方便答案:B4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。

A.顺序表B.带头结点的双循环链表C.双链表D.单循环链表答案:A5.链表不具有的特点是( )。

A.插入、删除不需要移动元素B.所需空间与线性长度成正比C.可随机访问任一元素D.不必事先估计存储空间答案:C6.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是( )。

A.不确定B.n-i+1C.n-iD.i答案:B7.设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是( )。

A.ZYXB.ZXYC.YZXD.XYZ答案:B8.一个递归算法必须包括( )。

A.递归部分B.迭代部分C.终止条件和递归部分D.终止条件和迭代部分答案:C9.设计一个判别表达式中左右括号是否配对出现的算法,采用( )数据结构最佳。

A.队列B.线性表的顺序存储结构C.线性表的链式存储结构D.栈答案:D10.对稀疏矩阵进行压缩存储目的是( )。

A.降低运算的时间复杂度B.节省存储空间C.便于进行矩阵运算D.便于输入和输出答案:B二、判断题(共10 道试题,共50 分)11.数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

答案:正确12.算法的有穷性是指一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都可在有穷时间内完成。

大连理工大学22春“计算机科学与技术”《数据结构》期末考试高频考点版(带答案)试卷号4

大连理工大学22春“计算机科学与技术”《数据结构》期末考试高频考点版(带答案)试卷号4

大连理工大学22春“计算机科学与技术”《数据结构》期末考试高频考点版(带答案)一.综合考核(共50题)1.队列是只允许在表的一端进行插入,而在另一端删除元素的线性表。

()A.正确B.错误参考答案:A2.以下()方法在数据基本有序时效率最好。

A.快速排序B.冒泡排序C.堆排序D.希尔排序参考答案:B3.堆是满二叉树。

()A.正确B.错误参考答案:A4.下列排序算法中,在待排序数据已有序时,花费时间反而最多的是()排序。

A.冒泡B.希尔C.快速D.堆参考答案:C在二叉查找树中,新结点总是作为叶结点插入。

()A.正确B.错误参考答案:A6.链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比参考答案:B7.在中序线索二叉树中,每个非根结点的非空线索都指向该结点的某个祖先结点。

()A.正确B.错误参考答案:A8.链式存储方法,它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点的逻辑关系由存储单元的邻接关系来体现。

()A.正确B.错误参考答案:B9.串的长度是指()。

A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数10.具有10个叶结点的二叉树中有()个度为2的结点。

A.8B.9C.10D.11参考答案:B11.顺序表的主要缺点是实现线性表的插入或删除可能移动很多元素。

()A.正确B.错误参考答案:A12.在后序线索二叉树中,后序下的第一个结点一定是最左下的结点。

()A.正确B.错误参考答案:B13.同一个算法,实现语言级别越高,算法执行的效率越低。

()A.正确B.错误参考答案:A14.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()。

A.9B.11C.15参考答案:B15.顺序存储方法,它不要求逻辑上相邻的结点在物理位置上亦相邻,结点之间的逻辑关系是由附加的指针字段表示的。

大连理工大学数据结构 课后题答案(1-3章)

大连理工大学数据结构 课后题答案(1-3章)

数据结构部分课后习题答案(1-3)第一章1.1数据的逻辑结构是从具体问题中抽象出来的数学模型,体现了事物的组成和事物之间的逻辑关系。

数据的存储结构主要用来解决各种逻辑结构在计算机中物理存储表示的问题。

1.2事前分析和事后统计事前分析:优点,程序不必运行,所得结果只依赖于算法本身缺点,不够精确事后统计:优点,精确缺点,必须运行程序,所得结果依赖于硬件、环境等因素1.3void func(int n){int i=1,k=100;while(i<n){k++;i+=2;}}考虑赋值、运算操作执行的次数第3行赋值2次第6行赋值执行n次,加法执行n次所以,总共2n+2次操作,算法复杂度为O(n)1.4y=y+i*j执行次数:1.5第二章2.9内存中一片连续空间(不妨假设地址从1到m)提供给两个栈S1和S2使用,怎样分配这部分存储空间,使得对任一个栈,仅当这部分空间全满时才发生上溢。

答:S1和S2共享内存中一片连续空间(地址1到m),可以将S1和S2的栈底设在两端,两栈顶向共享空间的中心延伸,仅当两栈顶指针相邻(两栈顶指针值之差的绝对值等于1)时,判断为栈满,当一个栈顶指针为0,另一个栈顶指针m+1时为两栈均空。

2.10线性表是数据项组成的一种有限且有序的序列,各元素之间呈线性关系。

从逻辑结构来说,栈和队列与线性表相同,都是典型的线性结构。

与线性表不同的是,栈和队列的操作特殊,受到一定的限制,仅允许在线性表的一端或两端进行。

栈是限定仅在一端进行插入删除的线性表,无论插入、删除还是读取都在一端进行,按后进先出的原则。

队列的元素只能从一端插入,从另一端删除,按先进先出的原则进行数据的存取。

2.11共有132种合法序列。

235641序列可以。

154623序列不可以。

对于每一个数来说,必须进栈一次、出栈一次。

我们把进栈设为状态‘1’,出栈设为状态‘0’。

n个数的所有状态对应n个1和n个0组成的2n位二进制数。

东大22年春学期《数据结构Ⅱ》在线平时作业1【参考答案】

东大22年春学期《数据结构Ⅱ》在线平时作业1【参考答案】

《数据结构Ⅱ》在线平时作业1-00001
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 100 分)
1.用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为
A.n-1
B.n
C.n+l
D.2n
正确答案:C
2.已知含10个结点的二叉排序树是一棵完全二叉树,则该二叉排序树在等概率情况下查找成功的平均查找长度等于
A.1.0
B.2.9
C.3.4
D.5.5
正确答案:B
3.对长度为n的关键字序列进行堆排序的空间复杂度为
A.O(log2n)
B.O(1)
C.O(n)
D.O(n*log2n)
正确答案:B
4.已知含6个顶点(v0,v1,v2,v3,v4,v5)的无向图的邻接矩阵如图所示,则从顶点v0出发进行深度优先遍历可能得到的顶点访问序列为
A..(v0,v1,v2,v5,v4,v3)
B.(v0,v1,v2,v3,v4,v5)
C.(v0,v1,v5,v2,v3,v4)
D..(v0,v1,v4,v5,v2,v3)
正确答案:B
5.n个顶点的有向完全图中含有向边的数目最多为
A.n-1
B.n
C.n(n-1)/2
D.n(n-1)
正确答案:D
6.在以单链表为存储结构的线性表中,数据元素之间的逻辑关系用
A.数据元素的相邻地址表示
B.数据元素在表中的序号表示
C.指向后继元素的指针表示。

大工秋数据结构在线作业

大工秋数据结构在线作业

大工秋数据结构在线作业标准化管理部编码-[99968T-6889628-J68568-1689N]大工17秋《数据结构》在线作业1总分:100分95分一、单选题共10题,50分15分下面关于串的概念的叙述中错误的是()。

学生答案:C 得分:5分25分一个有n个结点的有序单链表中,删除一个结点并仍然使链表有序的时间复杂度是()。

学生答案:B 得分:5分35分序列{a,b,c,d}顺序进栈,其出栈的顺序不可能为()。

学生答案:B 得分:5分45分以下四种数据结构中()不是线性结构。

学生答案:D 得分:5分55分最适合用做链式队列的链表是()。

学生答案:B 得分:5分65分栈的插入与删除操作均在()进行。

学生答案:A 得分:0分75分线性表在()情况下最适合采用链表表示。

学生答案:B 得分:5分85分以下算法的时间复杂度为():for(i=0;i<n;i++){for(j=1,sum=a[0];j<=i;j++){sum+=a[j];}cout<<"sumforsubarray0through"学生答案:C 得分:5分95分线性表采用链式存储结构时,其地址()。

学生答案:C 得分:5分105分栈是一种具有()特性的线性表。

学生答案:A 得分:5分二、判断题共10题,50分15分若顺序表中第一个元素的存储地址是100,每个元素长度为2,则第5个元素的地址是110。

学生答案:B 得分:5分25分取线性表第k个元素的时间代价同k的大小无关。

学生答案:A 得分:5分35分栈结构是一种限定只能在一端进行插入,在另一端进行删除的线性表。

学生答案:B 得分:5分45分线性表的每个元素都必须有一个前驱和一个后继。

学生答案:B 得分:5分55分串的长度是指串中所含字符的个数学生答案:A 得分:5分65分顺序存储的线性表不可以进行随机存取操作。

学生答案:B 得分:5分75分在队列的任意位置均可以实现插入元素操作。

大连理工大学22春“计算机科学与技术”《数据结构》期末考试高频考点版(带答案)试卷号:5

大连理工大学22春“计算机科学与技术”《数据结构》期末考试高频考点版(带答案)试卷号:5

大连理工大学22春“计算机科学与技术”《数据结构》期末考试高频考点版(带答案)一.综合考核(共50题)1.一个算法是可行的,即算法中描述的操作都是可以通过已实现的基本运算执行有限次来实现的。

()A.正确B.错误参考答案:A2.串的长度是指()。

A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数参考答案:B3.一个栈的输入序列为123...n,若输出序列的第一个元素是n,输出第i(1=i=n)个元素是()。

A.不确定B.n-i+1C.iD.n-i参考答案:B4.具有10个叶结点的二叉树中有()个度为2的结点。

A.8B.9C.10D.11参考答案:B5.若一棵二叉树的先序遍历序列为efhigjk,中序遍历序列为hfiejkg,则该二叉树根结点的右孩子为()。

A.eB.fC.gD.h参考答案:C6.某二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树一定是()。

A.空B.完全二叉树C.二叉排序树D.高度等于其结点数参考答案:D7.同一个算法,实现语言级别越高,算法执行的效率越低。

()A.正确B.错误参考答案:A8.一棵线索二叉树中含有的线索数比分支数多()个。

A.2B.1C.0D.不确定参考答案:A9.队列是只允许在表的一端进行插入,而在另一端删除元素的线性表。

()A.正确B.错误参考答案:A10.栈和队列具有相同的()。

A.逻辑结构B.存储结构C.存取点D.运算参考答案:A11.排序的稳定性是指排序算法中的比较次数保持不变,且算法能够终止。

()A.正确B.错误参考答案:B12.一个树的叶结点,在前序遍历和后序遍历下,皆以相同的相对位置出现。

()A.正确B.错误参考答案:A13.树的后根遍历序列等同于该树对应的二叉树的()。

A.先序序列B.中序序列C.后序序列D.以上都不对参考答案:B14.从19个记录中查找其中的某个记录,最多进行4次关键字的比较,则采用的查找方法只可能是()。

大连理工大学数据结构试题及答案

大连理工大学数据结构试题及答案

数据结构期末试卷一、选择题1.组成数据的基本单位是()。

(A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。

(A) 线性结构(B) 树型结构(C) 图型结构(D) 集合3.数组的逻辑结构不同于下列()的逻辑结构。

(A) 线性表(B) 栈(C) 队列(D) 树4.二叉树中第i(i≥1)层上的结点数最多有()个。

(A) 2i (B) 2i(C) 2i-1(D) 2i-15.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为()。

(A) p->next=p->next->next (B) p=p->next(C) p=p->next->next (D) p->next=p6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是()。

(A) 6 (B) 4 (C) 3 (D) 27.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()。

(A) 100 (B) 40 (C) 55 (D) 808.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为()。

(A) 3 (B) 4 (C) 5 (D) 19.根据二叉树的定义可知二叉树共有()种不同的形态。

(A) 4 (B) 5 (C) 6 (D) 710.设有以下四种排序方法,则()的空间复杂度最大。

(A) 冒泡排序(B) 快速排序(C) 堆排序(D) 希尔排序二、填空题1.设顺序循环队列Q[0:m-1]的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;。

2008年大连理工大学计算机专业基础综合(数据结构)真题试卷

2008年大连理工大学计算机专业基础综合(数据结构)真题试卷

2008年大连理工大学计算机专业基础综合(数据结构)真题试卷(总分:34.00,做题时间:90分钟)一、单项选择题(总题数:10,分数:20.00)(分数:2.00)A.B.C.D. √解析:(分数:2.00)A.B. √C.D.解析:(分数:2.00)A.B. √C.D.解析:(分数:2.00)A.B.C. √D.解析:(分数:2.00)A.B.C.D. √解析:(分数:2.00)A. √B.C.D.解析:(分数:2.00)A.B.C. √D.解析:(分数:2.00)A. √B.C.D.解析:(分数:2.00)A. √B.C.D.解析:(分数:2.00)A.B.C.D. √解析:二、简答题(总题数:4,分数:8.00)11.n阶对称阵(aij)n×n,采用压缩存储放于一维数组F[m]中。

从F[0]开始存储,给出矩阵的压缩存储方式及任一矩阵元素aij(O<=i,j<=n-1)的地址计算公式,并求算m。

(分数:2.00)__________________________________________________________________________________________正确答案:()解析:12.顺序队列如何解决假溢出问题。

(分数:2.00)__________________________________________________________________________________________ 正确答案:(正确答案:在顺序队列中,由于数组空间不够而产生的溢出叫真溢出;顺序队列因多次人队列和出队列操作后出现的有存储空间,但不能进行人队列操作的溢出称为假溢出。

假溢出是由于队尾rear的值和队头front的值不能由所定义数组下界值自动转为数组上界值而产生的.解决的办法是把顺序队列所使用的存储空间构造成一个逻辑上首尾相连的循环队列,因此,顺序队列通常都采用顺序循环队列结构。

大连理工大学《数据结构》作业 参考答案

大连理工大学《数据结构》作业 参考答案
u=q->link; q->link=L->link; L->link=q; q=u; } }
数据结构作业参考答案
//有序表插入 void yxcharu(LinkList &L, ElemType e) {
LinkList pre,p,s; pre=L; p=L->link; while(p&&p->data<e) {
pre=p; p=p->link; } s=(LinkList)malloc(sizeof(Lnode)); s->data=e; s->link=p; pre->link=s; }
main()
{
LinkList L;
int n,i,mink,maxk;
ElemType e;
char choice='0';
数据结构作业参考答案
if(InitList_Sq(L)) {
printf("建立空顺序表成功!\n"); do{
printf("当前线性表长度为:%d\n",L.length); printf("请输入要插入元素的位置:"); scanf("%d",&i); printf("请输入要插入的元素值:"); scanf("%d",&k); if(sxbcr(L,i,k)) {
s=(LinkList)malloc(sizeof(Lnode));
scanf("%d",&s->data); s->link=NULL;
p->link=s;
p=s;

数据结构作业答案(大连理工大学)

数据结构作业答案(大连理工大学)

作业1. 线性表编程作业:1.将顺序表逆置,要求用最少的附加空间。

参考答案#include <stdio.h>#include <malloc.h>#include <process.h>#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;typedef struct{ ElemType *elem;int length;int listsize;}SqList;//创建空顺序表Status InitList_Sq( SqList &L ){L.elem = (ElemType*) malloc (LIST_INIT_SIZE*sizeof(ElemType));if (!L.elem)exit(OVERFLOW);L.length = 0;L.listsize = LIST_INIT_SIZE;return OK;}//顺序表在第i个元素之前插入eStatus sxbcr(SqList &L, int i, ElemType e){ElemType *p,*q;if((i<1) || (i>L.length+1))return (ERROR);else{ q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;return (OK);}}//顺序表显示void xsList(SqList L){int i=L.length,k;for(k=0;k<i;k++)printf("%d ",L.elem[k]);printf("\n");}//顺序表逆置void nizhi(SqList &L){int i=0,j=L.length-1;ElemType temp;for(;i<j;i++,j--){temp=L.elem[i];L.elem[i]=L.elem[j];L.elem[j]=temp;}}main(){SqList L;char flag1='y',flag2='n';int i;ElemType k;if(InitList_Sq(L)){printf("建立空顺序表成功!\n");do{printf("当前线性表长度为:%d\n",L.length);printf("请输入要插入元素的位置:");scanf("%d",&i);printf("请输入要插入的元素值:");scanf("%d",&k);if(sxbcr(L,i,k)){printf("插入成功,插入后顺序表长度为:%d\n",L.length);printf("插入后的顺序表为:");xsList(L);}elseprintf("插入失败");printf("\n继续插入元素?(y/n) ");fflush(stdin);scanf("%c",&flag1);}while(flag1=='y');nizhi(L);printf("顺序表逆置后为:\n");xsList(L);}}2.从键盘读入n个整数(升序),请编写算法实现:(1)CreateList():建立带表头结点的单链表;(2)PrintList():显示单链表,(形如:H->10->20->30->40);(3)InsertList():在有序单链表中插入元素x;(4)ReverseList():单链表就地逆置;(5)DelList():在有序单链表中删除所有值大于mink且小于maxk的元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构作业 2013
nizhi(L); printf("顺序表逆置后为:\n"); xsList(L); } }
2. 从键盘读入 n 个整数(升序),请编写算法实现: (1) (2) (3) (4) (5) 元素。 选作:使用文本菜单完成功能选择及执行。 CreateList():建立带表头结点的单链表; PrintList():显示单链表,(形如:H->10->20->30->40); InsertList():在有序单链表中插入元素 x; ReverseList():单链表就地逆置; DelList():在有序单链表中删除所有值大于 mist(SqList L) { int i=L.length,k; for(k=0;k<i;k++) printf("%d ",L.elem[k]); printf("\n"); }
//顺序表逆置 void nizhi(SqList &L) { int i=0,j=L.length-1; ElemType temp; for(;i<j;i++,j--) { temp=L.elem[i];
参考答案:
#include<stdio.h> #include<malloc.h> #include<process.h> #define #define #define #define #define #define TRUE FALSE OK ERROR INFEASIBLE OVERFLOW 1 0 1 0 -1 -2
数据结构作业 2013
typedef typedef
int int
Status; ElemType;
typedef struct node { ElemType data; struct node *link; }Lnode, *LinkList;
//头插法建立单链表 void Create_L1(LinkList &L, int n) { LinkList p; int i; L=(LinkList)malloc(sizeof(Lnode)); L->link = NULL; for (i = n; i > 0; --i) { p=(LinkList)malloc(sizeof(Lnode)); scanf("%d",&p->data); p-> link = L-> link; L-> link = p; } }
数据结构作业 2013
L.listsize = LIST_INIT_SIZE; return OK; } //顺序表在第 i 个元素之前插入 e Status sxbcr(SqList &L, int i, ElemType e) { ElemType *p,*q; if((i<1) || (i>L.length+1)) return (ERROR); else { q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p; *q=e; ++L.length; return (OK); } }
数据结构作业 2013
L.elem[i]=L.elem[j]; L.elem[j]=temp; } } main() { SqList L; char flag1='y',flag2='n'; int i; ElemType k; if(InitList_Sq(L)) { printf("建立空顺序表成功!\n"); do{ printf("当前线性表长度为:%d\n",L.length); printf("请输入要插入元素的位置:"); scanf("%d",&i); printf("请输入要插入的元素值:"); scanf("%d",&k); if(sxbcr(L,i,k)) { printf("插入成功,插入后顺序表长度为:%d\n",L.length); printf("插入后的顺序表为:"); xsList(L); } else printf("插入失败"); printf("\n 继续插入元素?(y/n) "); fflush(stdin); scanf("%c",&flag1); }while(flag1=='y');
数据结构作业 2013
作业 1. 线性表
编程作业: 1. 将顺序表逆置,要求用最少的附加空间。
参考答案 #include <stdio.h> #include <malloc.h> #include <process.h> #define LIST_INIT_SIZE #define LISTINCREMENT #define #define #define #define #define #define typedef typedef TRUE FALSE OK ERROR INFEASIBLE OVERFLOW int int Status; ElemType; 100 10 1 0 1 0 -1 -2
typedef struct { ElemType *elem; int length; int listsize; }SqList;
//创建空顺序表 Status InitList_Sq( SqList &L ) { L.elem = (ElemType*) malloc (LIST_INIT_SIZE*sizeof(ElemType)); if (!L.elem) exit(OVERFLOW); L.length = 0;
//尾插法建立单链表 void Create_L2(LinkList &L,int n) { LinkList s, p; int i; L=(LinkList)malloc(sizeof(Lnode)); L->data=0; L->link=NULL; p=L; for(i=1;i<=n;i++) { s=(LinkList)malloc(sizeof(Lnode)); scanf("%d",&s->data);
相关文档
最新文档