




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.4已知顺序表 L递增有序,试写一算法,将 X插入到线性表的适当位置上,以保持线性表的有序性。解:intInsList(SeqList*L,intX){inti=0,k;if(L->last>=MAXSIZE-1){printf("表已满无法插入! ");return(ERROR);}while(i<=L->last&&L->elem[i]<X)i++;for(k=L->last;k>=I;k--)L->elem[k+1]=L->elem[k];L->elem[i]=X;L->last++;return(OK);}2.5写一算法,从顺序表中删除自第 i个元素开始的 k个元素。解:intLDel(Seqlist*L,inti,intk){if(i=1||(i+k>L->last+1)){printf("输入的 i,k值不合法");return(ERROR);}elseif(i+k==L->last+2){L->last=i-2;returnOK;}else{j=i+k-1;while(j<=L->last){elem[j-k]=elem[j];j++;}L->last=L->last-k+1;returnOK;}}2.6已知线性表中的元素(整数)以递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于间复杂度(注意: mink
mink且小于maxk的元素(若表中存在这样的元素)和maxk是给定的两个变量,他们的值为任意的整数)
,分析你的算法的时。解:intDelete(Linklist,intmink,intmaxk){Node*p,*q;p=L;while(p->next!=NULL)p=p->next;if(mink>=maxk||L->next->data>=maxk||mink+1=maxk){printf("参数不合法! ");returnERROR;}else{while(p->next->data<=mink)p=p->next;q=p->next;while(q->data<maxk&&q!=NULL){p->next=q->next;free(q);q=p->next;}returnOK;}}2.7试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的储存空间将线性表a1,a1,?,an)逆置为(an,an-1,?,a1)。1)以顺序表作存储结构。解:intReversePosition(SpListL){intk,temp,len;intj=0;k=L->last;len=L->last+1;for(j;j<len/2;j++){temp=L->elem[k-j];elem[k-j]=elem[j];elem[j]=temp;}returnOK;}2)以单链表作存储结构。解:intReversePosition(LinklistL){Node*NL,q,r;q=L;r=L;NL=L->next;if(NL==NULL)returnERROR;while(q->next!=NULL){q=q->next;r->next=q;r=q;}while(NL->next!=r&&NL->next!=NULL){q=NL;while(q->next!=r)q=q->next;r->next=q;r=q;}r->next=NL;NL->next=NULL:returnOK;}2.8假设两个按元素值递增有序排列的线性表 A和B,均以单链表作为存储结构,请编写算法,将 A表和B表归并成一个按元素值递减的有序排列的线性表 C,并要求利用原表(即A表和B表的)结点空间存放表 C解:voidmerge(SepList*LA,SepList*LB,SepList*LC){Node*p1,*p2,*q1,*q2;LA->next=p1;LB->next=q1;while(p1!=NULL&&q1!=NULL)if(p1->data>q1->data){q2=q1->next;q1->next=LC->next;LC->next=q;q1=q2;}else{p2=p1->next;p1->next=LC->next;LC->next=p1;p1=p2;}}2.9假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。已知某个s为指向链表结点的指针,试编写算法在链表中删除指针s所指结点的前驱结点。解:ElemTypeDeletePreElem(Node*s){ElemTypetemp;Node*p,*pre;p=s;while(p->next!=s)p=p->next;pre=p;while(p->next!=pre)p=p->next;p->next=s;temp=pre->data;free(pre);returntemp;}2.10已知有单链表表示的线性表中含有三类字符的数据元素 (如字母字符、 数字字符和其他字符),试编写算法来构造三个以循环链表表示的线性表,使每个表中只含同一类字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。解:LinkList_Divide(LinkList&L,CiList&A,CiList&B,CiList&C)//把单链表 L的元素按类型分为三个循环链表 .CiList为带头结点的单循环链表类型 .{s=L->next;A=(CiList*)malloc(sizeof(CiLNode));p=A;B=(CiList*)malloc(sizeof(CiLNode));q=B;C=(CiList*)malloc(sizeof(CiLNode));r=C;//建立头结点while(s!=NULL){if(s->data>='a'&&s->data<='z'||s->data>='A'&&s->data<='Z'){p->next=s;p=s;}elseif(s->data>='0'&&s->data<='9'){q->next=s;q=s;}else{r->next=s;r=s;}}p->next=A;q->next=B;r->next=C;}2.11设线性表A=(a1,a2,?,am),B=(b1,b2,?,bn),试写一个按下列规则合并A、B为线性表C的算法,使得C=(a1,b1,?,an,bn,an+1,?,am)当m>n时或者C=(a1,b1,?,am,bm,bm+1,?,bn)当m<=n时线性表A、B、C均以单链表作为储存结构,且C表利用A表和B表中的结点空间构成。解:Liklistmerge(LinklistALinklistB){LinklistC;Node*pa,*pb,*r;C=A;r=A;pa=A->next;pb=B->next;while(pa!=NULL&&pb!=NULL){r->next=pa;r=pa;pa=pa->next;r->next=pb;r=pb;pb=pb->next;if(pa==NULL)r->next=pb;elser->next=pa;return(C);}}2.12将一个用循环链表表示的稀疏多项式分解成两个多项式, 使这两个多项式中各自仅含奇次项或偶次项,并要求利用原链表中的结点空间来构成这两个链表。解:typedefstructPolynode{intcoef;intexp;structpolynode*next;}Polynode*PolyList;voidGreateCircleLinklistC(LinklistRL,Node*e){Node*p;p=RL->next;RL->next=e;RL=RL->next;RL->next=p;}voidDescouposeList(LinklistRLDescouposeRADescouposeRB){Node*p;p=RL->next;if(p->next=NULL)return;p=p->next;while(p!=RL->next){if(p->exp%2==0)Greate(RB,p);elseGreate(RA,p);p=p->next;}}2.13建立一个带头节点的线性表,用以存放输入的二进制数,链表中每个结点的放一个二进制位,并在此链上实现对二进制数加 1的运算。
data
域存解:voidBinnaryFod(DlinklistDL){DNode*p,*s;p=DL;whi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肝血管外皮细胞瘤
- 拆迁安置房交易与补偿款结算专项合同
- 茶叶进出口代理合同样本
- 城市道路改造出渣车劳务分包及交通疏导合同
- 股权回购拆伙协议书范本
- 休闲餐饮区商铺租赁合同范本含卫生安全条款
- 电力变压器安装与设备调试服务协议
- 车辆改装设计公司股权购买合同
- 金融租赁第三方担保合作合同
- 环保设施建设拆迁补偿与环保产业房产买卖合同
- GB/T 13511.1-2025配装眼镜第1部分:单焦和多焦定配眼镜
- 2025年新媒体领导面试题及答案
- 2025统编办一年级下册道德与法治教案(精简版)
- (高清版)DB11∕T2279-2024社会单位消防安全评估规范
- 石碏谏宠州吁
- 2025年江苏省苏州市中考历史复习精练卷(中国古代史) 含答案
- 浙江省建设工程检测技术人员(建筑材料及构配件)认证考试题库(含答案)
- 四川省攀枝花市重点名校2025届中考生物押题卷含解析
- 员工住厂外免责协议书(2篇)
- 2024年淮南市第一人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 93J007-7道路图集(正式版)
评论
0/150
提交评论