ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:19.03KB ,
资源ID:21415909      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21415909.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈工大线性表部分作业练习Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈工大线性表部分作业练习Word下载.docx

1、 for(q=L.last;q=p;q-) /将位置p,p+1,的元素向下移动一个位置 L.elementsq+1=L.elementsq; L.last = L.last+1; L.elementsp=x; showlist(L); void Delete(position p,LIST & if(pL.last)|(pposition does not exist L.last=L.last-1; for(q=p;qq+) L.elementsq=L.elementsq+1;void Locate(char x,LIST L)/返回L表中X元素的位置 for(q=0; if(L.eleme

2、ntsq=x)%c在第%d位n,x,q+1);int main()int a,p,i=0;char x,z100;LIST L;MakeNull(L);printf(输入元素初始化表(20个数以内)n gets(z); while(zi!=0&20) L.elementsi=zi; i+; L.last=L.last+1;L.last=L.last-1;表如下:showlist(L);while(a!=0)n1.插入操作。n2.删除操作。3.查询操作。0退出。scanf(%d,&a);if(a=1)printf(输入:元素 位置ngetchar();%c %dx,&p);Insert(x,p-

3、1,L);else if(a=2)输入位置nDelete(p-1,L);else if(a=3)输入查询元素%cx);Locate(x,L);时间复杂度分析:Insert函数:O(n)Delete函数:Locate函数:2. 实现线性表的带表头结点的单链表存储结构,并分析每种基本操作(算法)的 时间复杂度。#includeix; show(head); coutendl链表长度为: length(head)endl;序号为的链表结点地址为:get(head,i)值为x的链表结点序号为:locate(head,x)ch,ch!$) p=new node; p-data=ch; rear-next

4、=p; rear=p;next=NULL; return head;lklist initlist() pointer p; return p;int length(lklist head) pointer s; int j=0; s=head-next; while(s!=NULL) j+; s=s- return j;pointer get(lklist head ,int i) if(i=0) return head; if(i while(p! if(j=i) break; p=p-int locate(lklist head ,datatype x) j+; if(p-data=x)

5、 break; if(p!=NULL) return j; else return-1;void show(lklist head)p-datadata=x;next=p-next=q;void deletelk (lklist head,int i) q=get(head,i-1); while(q=NULL|q-next=NULL)非法输出位置! return ; p=q- delete p;3. 实现线性表的不带表头结点的单链表存储结构,并分析每种基本操作(算法) 的时间复杂度rear=head;int i=0;if(i=0)p=head;Elserear- rear=p; 4. 实现线

6、性表的游标存储结构,并分析每种基本操作(算法)的时间复杂度。stdlib.h#define maxsize 100typedef struct char data; int next;spacestr; /存储结构定义spacestr SPACEmaxsize;typedef int position,Cursor;Cursor L,M,avail;spacestr create(); /建立静态链表void Initialize(); /可用空间初始化Cursor DeleteNode(); /可用空间的分配操作void FreeNode(Cursor q); /可用空间的回收操作void

7、Insert(int x,position p,spacestr SPACE); /插入操作void Delete(position p,spacestr SPACE); /删除操作 int p,x; Initialize();/可用空间初始化 p=GetNode();/可用空间的分配操作 Insert(x,p,SPACE);/插入操作 q=new celltype;spacestr create(SPACE)/时间复杂度O(n) spacestr *head,p,rear; char ch; head=SPACE; p=rear;void Initialize()/时间复杂度O(n) int

8、 j; /* 依次链接池中结点*/ for (j=0; jnext=q- delete q;(二)栈、队列和串部分五. 算法设计(作业,必须交) 假设以不带头结点的循环链表表示队列,并且只设一个指针指向队尾结点, 但不设头指针。试设计相应的入队和出队的算法。入队算法: Void rudui(Node*rear, T x) S=new Node if(rear=NULL) rear=s;next=s;next=reear-出队算法:void chudui(Node if(s=rear)rear=NULL;else rear-next=s-delete s; 设顺序栈 S 中有 2n 个元素,从栈

9、顶到栈底的元素依次为 a2n,a2n-1,a1, 要求通过一个循环队列重新排列栈中元素,使得从栈顶到栈底的元素依次为a2n, a2n-2,a2,a2n-1,a2n-3,a1,请设计算法实现该操作,要求空间复杂度和 时间复杂度均为 O(n)。1. 将所有元素出栈并入队2. 依次将队列元素出队;如果是偶数终点,则再入队,如果是奇数结点,则入栈3. 将奇数结点出栈并入队4. 将偶数结点出队并入栈5. 将所有元素出栈并入队6. 将所有元素出队并入栈为所求 设计算法把一个十进制整数转换为二至九进制之间的任一进制数输出。void jinzhi (int num, int r) Top=-1; While(

10、num!0) K=num%r; S+top=k; Num=num/r;While(top! CoutStop-; 假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号 “”和“”以及花括号“”和“”,且这三种括号可按任意的次序嵌套使 用。编写算法判断给定表达式中所含括号是否配对出现。 括号匹配算法:void kuo(char a,int n)i=0;flag=1; While(in&flag) If(ai=(|ai=|ai= ) S+top=ai+; Else Switchai case ) if(top=-1|Stop-!=() flag=0;break; case if(to

11、p=-1|Stop-!=) flag=0; case if(top=-1|Stop-!=) flag=0;i+; 对串的模式匹配 KMP 算法设计求模式滑动位置的 next 函数。(三)多维数组和广义表部分五算法设计(作业,必须交) 1若在矩阵 A 中存在一个元素 ai,j(0in-1,0jm-1),该元素是第 i 行元素中最小值且又是第 j 列元素中最大值,则称此元素为该矩阵的一个马鞍 点。假设以二维数组存储矩阵 A,试设计一个求该矩阵所有马鞍点的算法,并分 析最坏情况下的时间复杂度。马鞍点算法:void andian(int a,int m,int n)n; d=ai0;k=0; for(j=1;jm;j+) if(aijd) break; if(j=n) cout”输出鞍点”kaik;算法分析:时间复杂度为O(mn+n2).2已知两个 nn 的对称矩阵按压缩存储方法存储在一维数组 A 和 B 中,编写 算法计算对称矩阵的乘积。矩阵

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1