南邮_数据结构作业答案讲解教学教材

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

2020/6/8
4
第三章 习题讲解
3-1. 设A,B,C,D,E五个元素依次进栈(进栈 后可立即出栈),问能否得到下列序列。若能得 到,则给出相应的push和pop序列;若不能,则 说明理由。 (1)A,B,C,D,E
(1)能得到该序列。 相应的push和pop序列为:push(A)wk.baidu.com pop(); push(B); pop(); push(C); pop(); push(D); pop(); push(E); pop();
2020/6/8
5
第三章 习题讲解
3-1. 设A,B,C,D,E五个元素依次进栈(进栈 后可立即出栈),问能否得到下列序列。若能得 到,则给出相应的push和pop序列;若不能,则 说明理由。 (2)A,C,E,B,D
(2)不能得到该序列,在E出栈时,B和D在栈 中,B比D先进栈,所以D应比B先出栈。
南邮_数据结构作业答案讲解
第二章 习题讲解
2-4.Loc(A[i][j][k])=134+(i*n*p+j*p+k)*2
2020/6/8
2
2-9. 设有长度为n 的一维整型数组A,设计一个算法,将原数 组中的元素以逆序排列
void Invert(T elements[], int length) //length数组长度 //elements[]为需要逆序的数组
2020/6/8
9
int Search_Insert(List *lst, T x)
{ int i,j;
for(i=0; (x>lst->Elements[i])&&(i<lst->Size);i++);
// 查找首个大于等于x的元素位置,并记录在i中
① if (lst->Elements[i]==x) return i; //x在表中时,返回x的位置
sum=j-i; lst[i++]=lst[j++]; while(ej<lsne) lst[i++]=lst[j/+/小+]于; 等于//删y的除元su素m删个除元素 n=n-sum; { j++; n--; }
}
2020/6/8
12
4.6 给出下列稀疏矩阵的行优先和列优先顺序存储 的行三元组和列三元组表示。
② if (IsFull(lst)) //或if(lst->Size==lst->maxList) return -1; //表已满时,无法插入,返回-1
for (j=lst->Size-1; j>=i; j--)
lst->Element[j+1]=lst->Element[j];
③ lst->Element[i]=x; //新元素即插入位置i处
2020/6/8
6
3-1. 设A,B,C,D,E五个元素依次进栈(进栈 后可立即出栈),问能否得到下列序列。若能得到 ,则给出相应的push和pop序列;若不能,则说 明理由。 (3)C,A,B,D,E
(3)不能得到该序列,在C出栈时,A和B在栈中 ,A比B先进栈,所以B应比A先出栈。
2020/6/8
0 0 6 0 0 行三元组: 0 2 6 列三元组: 1 0 3
3
0
0
0
7
1
0
3
0
2
6
0 0 0 0 0
1 4 7
3 2 8
0
0
8
10
0
3
2
8
3
3
{ T e; for (int i=1;i<length/2;i++) { e=elements[i-1]; elements[i-1]=elements[length-i]; elements[length-i]=e; }
}
2020/6/8
3
2-12.设计一个算法,将单链表中结点以逆序排列。逆序的单 链表中的结点均为原表中的结点。 Node* pInvert(Node* first) { Node *p=first, *q; first=NULL; while (p) { q=p->Link; p->Link=first; first=p; p=q; } return first; }
前置条件:x<y
后置条件:删除有序表中元素值在x和y之间( 含x和y)的所有元素。
2020/6/8
11
void Search_Delete(List *lst, T x, T y)
{
if (lst->Size==0)
{ printf(“The list is empty”); return -1; }
lst.Size++;
return i;
//插入新元素并返回该元素的位置
}
2020/6/8
10
4-1. 设线性表采用顺序表示方式,并假定顺序表是 有序的(设表中元素已按非递减次序排列)。编写 函数,实现线性表的如下运算:
(2)void Search_Delete(List *lst, T x,T y)
7
3-1. 设A,B,C,D,E五个元素依次进栈(进栈 后可立即出栈),问能否得到下列序列。若能得到 ,则给出相应的push和pop序列;若不能,则说 明理由。 (4)E,D,C,B,A
(4)能得到该序列。 相应的push和pop序列为:push(A); push(B); push(C); push(D); push(E); pop(); pop(); pop(); pop(); pop();
2020/6/8
8
第四章 习题讲解
4-1. 设线性表采用顺序表示方式,并假定顺序表是 有序的(设表中元素已按非递减次序排列)。编写 函数,实现线性表的如下运算: (1)int Search_Insert(List *lst,T x)
后置条件:在有序的顺序表中搜索元素x。 •若x在表中,则返回x在表中的位置。 •否则,若表未满,则在表中插入新元素x,并且插 入后,线性表仍然是有序的,返回新元素x的位置; •若表已满,无法插入新元素,则返回-1。
int i,j,sum=0;
for (i=0;temp[i]<x&&i<n;i++); //找到首个大于等于x的元素位置i
if(i>n-1) return; //没有符合条件的元素
ffoorr ((jj==ii;;ljs<tn[j;]<) =y&&j<n;j++); if (lst[j]>y//)找到首个//大大于于yy的的元元素素前位移置j
相关文档
最新文档