数据结构作业答案(大连理工大学)
大连理工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 栈的逆序输出另一个栈的常见应用是逆序输出。
最新大连理工大学数据结构(一)上机作业答案——张老师

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
大连理工数据结构

【去年考的那道题很变态,一直调整调整, 建议不要写得太大,以免纸张不够】
• {易}考点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试卷总分: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春“计算机科学与技术”《数据结构》期末考试高频考点版(带答案)一.综合考核(共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.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【参考答案】

《数据结构Ⅱ》在线平时作业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.指向后继元素的指针表示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);