工大数据结构第二章作业(8)

2019-04-09 14:22

c[cmark].row = i; c[cmark].col = j; c[cmark].data = Find(b,i,j); cmark++; } } c[0].data = cdata;//最终c的非零元素个数 }

void main(){ triple a[NumVertices+1]; Init(a); cout<<\您输入的三元组:\ Print(a); cout<<\您输入的三元组表示的稀疏矩阵:\ PrintMT(a); cout<<\稀疏矩阵对角元素之和为:\ cout<<\和a相加:\ triple c[20];

Combine(a,a,c);//将a和a相加放进c里面 cout<<\相加后c三元组为:\ Print(c); cout<<\相加后的稀疏矩阵为:\ PrintMT(c); }

十五、设有一个稀疏矩阵:

?04?00??80??00?0?7???00000000000??3001??0000??

5000?0020??6000??0 1、写出三元组顺序表存储表示

2、写出十字链表存储的顺序表示

1. 行 列 元素

6 7 8 6行7列 8 个非零元素 0 1 4 1 3 -3

1 6 1 2 0 8 3 3 5 4 1 -7 4 5 2 5 3 6 2.

.

十六、画出广义表LS=(( ), (e), (a, (b, c, d)))的头尾链表存储结构(类似于教材P70图2-27.9)。 要求:按照教材中的事例画出相应的图形,不需要编程。 其中第一个节点如下:

t 解:

t t t

t a t e t

t

t c t b t

^^^^ ^ d ^

十七、试编写求广义表中原子元素个数的算法。 要求:

1、定义广义表的节点的型; 2、定义广义表的基本操作;

3、定义本题要求的函数int elements(listpointer L);函数返回值为广义表中原子的个数。例如,广义表(a, b, c, d)原子的个数为4,而广义表(a, (a, b), d, e, ((i, j), k))中院子的个数为3。 提示:先利用基本操作Cal(L)获得表头,判断表头是不是原子,再利用基本操作Cdr(L)获得除第一个元素外的其他元素所形成的表L1,利用递归的方法求L1中原子的个数。 递归有问题

#include using namespace std;

//广义表结构的型 struct listnode{ listnode *link;

bool tag;//false表示该结点为原子,true表示结点为指向子表的指针 union{

char data;

listnode *dlink; }element;//共用体 };

typedef listnode *listpointer;

//表头

listpointer Cal(listpointer S){ if (S==NULL) return NULL; else {

listpointer temp; temp->tag=S->tag; temp->link=S->link;

temp->element=S->element; return temp; } }

//表尾

listpointer Cdr(listpointer S){ if (S->link==NULL)

return NULL; else {

listpointer temp;

temp->tag=S->link->tag; temp->link=S->link->link;

temp->element=S->link->element; return temp; } }

int elements(listpointer L){

//如果广义表为空,返回原子个数为零 if(L==NULL) return 0; //如果广义表第一个结点是原子返回其他结点的原子个数+1 if(Cal(L)->tag==false) //表头为原子 return(elements(Cdr(L))+1); else //表头为广义表 return(elements(Cdr(L))); }

void main(){

//建立广义表(a,(b,c),d,e) listpointer A; A->tag=false;

A->element.data='a'; listpointer B; B->tag=false;

B->element.data='b'; listpointer C; C->tag=false; C->link=NULL; C->element.data='c'; B->element.dlink=C; listpointer F; F->tag = true; A->link=F; listpointer D; D->tag=false;

D->element.data='d'; F->link = D; listpointer E;

E->tag=false;

E->element.data='e'; E->link=NULL; B->link=D; D->link=E;

cout<<\广义表的原子元素个数为:\ }

要求:

1、上述作业要求在单独完成;

2、完成后,于规定期限内提交到ftp服务器的相应目录中中,注意,在提交时将所编写的程序统一拷贝到一个Word文件中,文件名格式为“学号+姓名”


工大数据结构第二章作业(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国宠物食品市场调查分析报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: