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

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

作业1. 线性表

编程作业:

1.将顺序表逆置,要求用最少的附加空间。

参考答案

#include <>

#include <>

#include <>

#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 -2

typedef int Status;

typedef int ElemType;

typedef struct

{ ElemType *elem;

int length;

int listsize;

}SqList;

立单链表");

printf("2.取元素值");

printf("3.查找\n");

printf("4.插入");

printf("5.删除");

printf("6.显示\n");

printf("7.删除大于mink且小于maxk的元素值");

printf("8.就地升序排序\n");

printf("9.就地逆置");

printf("a.有序表插入");

printf("q.退出\n");

printf("\n请选择操作:");

fflush(stdin);

scanf("%c",&choice);

switch(choice)

{

case '1': printf("请输入单链表中结点个数:");

scanf("%d",&n);

Create_L2(L,n);

break;

case '2': printf("请输入元素位序:");

scanf("%d",&i);

GetElem_L(L,i,e);

printf("元素值为:%d\n",e);

break;

case '3': printf("请输入要查找的元素:");

scanf("%d",&e);

if(dlbcz(L,e))

printf("查找成功!");

else

printf("查找失败。");

break;

case '4': printf("请输入插入位置:");

scanf("%d",&i);

printf("请输入要插入的元素:");

scanf("%d",&e);

if(ListInsert_L(L,i,e))

printf("插入成功!单链表为:");

else

printf("插入失败。");

break;

case '5': printf("请输入删除位置:");

scanf("%d",&i);

if(ListDelete_L(L,i,e))

printf("删除成功!");

else

printf("删除失败。\n");

break;

case '6': printf("\n单链表为:");

xsList(L);

break;

case '7': printf("请输入mink和maxk:");

scanf("%d,%d",&mink,&maxk);

DelList(L,mink,maxk);

break;

case '8': sh_sort(L);

break;

case '9': nizhi(L);

break;

case 'a': printf("请输入在有序表中插入的元素值:");

scanf("%d",&e);

yxcharu(L,e);

break;

}

}

}

作业2. 栈、队列、数组

非编程作业:

1.若进栈序列为ABCD,请写出全部可能的出栈序列和不可能的出栈序列。参考答案:

可能的出栈序列:(14种)

dcba cdba bacd cbda adcb cbad bdca acdb bcda acbd bcad abdc badc abcd

不可能的出栈序列:(10种)

d bca dbac dabc dacb dcab cabd cdab bdac cadb adbc

2.简要说明循环队列如何判断队满和队空

参考答案:

当牺牲一个存储结点,约定以“队列头指针在队列尾指针的下一位置(指环状的下一个位置)上” 作为队列“满”状态的标志时,循环队列判断队满的条件为:(rear+1) % MaxQsize==front;判断队空的条件为:front == rear。

3.设A为n阶对称矩阵,采用压缩存储存放于一维数组F[n(n+1)/2]中(从F[0]开始存放),请分别给出存放上三角阵时任一矩阵元素a ij(1≤i,j≤n)的地

址计算公式和存放下三角阵时任一矩阵元素a ij(1≤i,j≤n)的地址计算公式。参考答案:

存放上三角阵时,任一矩阵元素a ij(1≤i,j≤n)的地址计算公式为:

(

)

()

ij11

-1

Loc(a)=Loc(a)+1*

2

i i

j l

⎡⎤

+-

⎢⎥

⎣⎦

存放下三角阵时,任一矩阵元素a ij(1≤i,j≤n)的地址计算公式为:

()

()

ij11

-1

Loc(a)=Loc(a)+1*

2

j j

i l

⎡⎤

+-

⎢⎥

⎣⎦

4.写出下面稀疏矩阵的三元组顺序表和十字链表表示。

参考答案:

400000

503008

000000

000700

200000

A

⎡⎤

⎢⎥

⎢⎥

⎢⎥

=

⎢⎥

⎢⎥

⎢⎥

⎣⎦

相关文档
最新文档