已知线性表中的元素以值递增有序排列.doc_第1页
已知线性表中的元素以值递增有序排列.doc_第2页
已知线性表中的元素以值递增有序排列.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

已知线性表中的元素以值递增有序排列,并以单链表做存储结构。试写一高效的算法,删除表中所有值大于mink 且小于 maxk 的元素(若表中存在这样的元素)同时释放被删除节点空间,并分析你的算法的时间复杂度(注意:mink 和 maxk 是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同)。#include #include #include typedef int ElemType;typedef struct LNode ElemType data; /* 数据子域 */ struct LNode *next; /* 指针子域 */ LNode; /* 结点结构类型 */LNode *L; /* 函数声明 */LNode *creat_L();void delete_L(LNode *L,int i); /返回值格式变为空/* 建立线性链表*/LNode *creat_L() LNode *h,*p,*s; ElemType x; h=(LNode *)malloc(sizeof(LNode); /* 分配头结点 */ h-next=NULL; p=h; printf(输入一串数字(以-1结束):ndata= ); scanf(%d,&x); /* 输入第一个数据元素 */ while( x!=-1) /* 输入-1,结束循环 */ s=(LNode *)malloc(sizeof(LNode); /* 分配新结点 */ s-data=x; s-next=NULL; p-next=s; p=s; printf(data= ); scanf(%d,&x); /* 输入下一个数据*/ return(h); /* creat_L */* 输出单链表中的数据元素*/void out_L(LNode *L) LNode *p; p=L-next; printf(n数据是:); while(p!=NULL) printf(%5d,p-data); p=p-next; /* out_link */* 删除大于x小于y的值*/void delete_L(LNode *L,int a,int b) LNode *p,*q; p=L; q=p; p=p-next; if(p=NULL) printf(ERROR:链表为空); while(p!=NULL) if(p-data a) & (p-data next=p-next; free(p); p=q-next; else q=p; p=p-next; /* delete_L */void main() int a,b; L=creat_L( ); out_L(L); printf(nn请输入你要删除的元素的范围x和y:n); scanf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论