篇章二线性表---常见操作
发布日期:2021-06-29 15:42:33
浏览次数:3
分类:技术文章
本文共 2650 字,大约阅读时间需要 8 分钟。
1.顺序表数组R[],元素0~m+n-1,前m个有序,后n个元素有序递增,使其整体有序
void insertSort(int R[],int n){ int i,j,temp; for(i=m;i<=m+n-1;i++) { temp=R[i]; for(j=i-1;j>=0&&temp
2.递增有序的单链表A,B,求出A和B的差集(仅在A出现,而不再B出现)
void differ(LNode *A,LNode *B){ LNode *p=A->next;LNode *q=B->next; LNode *pre=A; LNode *r; while(p!=NULL&&q!=NULL) { if(p->datadata) { pre=p; p=p->next; } else if(p->data>q->data) q=q->next; else { pre->next=p->next; r=p; p=p->next; free(r); } }}
3.将顺序表中的元素逆置
void reverse(SqList *&L){ int i,j; int temp; for(i=0,j=L.length-1;i
4.从一给定的顺序表中删除下标i-j
void delete(Sqlist &L,int i,int j){ int k,deleta; deleta=j-i+1; for(k=j+1;k
5.顺序表整型数据,将L中所有小于表头元素放前面,大于表头元素的放在后半部分。
void move(Sqlist &L){ int i,j;int temp; i=0,j=L.length-1; temp=L.data[i]; while(itemp) j--; if(i
6.递增非空单链表,设计一个算法删除值域重复的结点
void delsll(LNode *L){ LNode *p=L->next,*q; while(p->next!=NULL) { if(p->data==p->next->data) { q=p->next; p->next=q->next; free(q); } p=p->next; }}
7.删除单链表L中最小值结点
void delminnode(LNode *&L){ LNode *pre=L;LNode *p=L->next; LNode *minpre,minp=p; while(p!=NULL) { if(p->datadata) { min=p; minpre=pre; } pre=p; p=p->next; } minpre->next=minp->next; free(minp);}
8.带头结点的单链表逆置
void reverse(LNode *L){ LNode *p=L->next,*q; L->next=NULL; while(p!=NULL) { q=p; p=p->next; q->next=L->next; L->next=q; }}
9.带头结点单链表分解成两个单链表A,B,A只含data域为奇数结点,B中只含data域为偶数结点
void split(LNode *A,LNode *&B){ LNode *p,*q,*r; B=(LNode*)malloc(sizeof(LNode)); B->next=NULL; r=B; p=A; while(p->next!=NULL) { if(p->next->data%2==0) { q=p->next; p->next=q->next; q->next=NULL; r->next=q; r=q; } else p=p->next; } }
10.逆序输出单链表中的数据
void reprint(LNode *L){ if(L!=NULL) { reprint(L->next); cout<data; }}
11.除去最大公共前缀后子表比较大小
int compare(float A[],int An,float B[],int Bn){ int i=0; while(i=An&&i>=Bn) return 0; else if(i>=An&&i
12.输出链表中倒数第k个位置上的结点
int findElem(LNode *head,int k) { LNode *q=head->next,*p=head; int i=1; while(q!=NULL) { q=q->next; i++; if(i>k) p=p->next; } if(p==head) return 0; else { cout<data; return 0; }}
13.对两个非递减有序的顺序表A,B进行合并,合并后的结果放A[]中
int comb(int A[],int &na,int B[],int nb){ if(na+nb0) { if(i==0||A[i-1]
14.L为单链表,试写出下面运算的递归算法
//求链表中的最大整数int getMax(LNode *L){ if(L->next==NULL) return L->data; int temp=getMax(L-data); if(L->data>temp) return L->data; else return temp;} //其链表中的结点个数int getNum(LNode *L){ if(L->next==NULL) return 1; return 1+getNum(L->next);} //求所有整数的平均值float getAvg(LNode *L,int n){ if(L->next==NULL) return (float)(L->data); else { float sum=getAvg(L->next,n-1)*(n-1); return (float)(L->data+sum)/n; }}
转载地址:https://codingchaozhang.blog.csdn.net/article/details/85250232 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月05日 11时01分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
本机电脑连接虚拟机redis失败解决方法
2019-04-29
DM365 应用层gpio控制
2019-04-29
linux i2c子系统abc
2019-04-29
CSS3 帧动画(Sprite,直译叫雪碧图)
2019-04-29
Java 父线程与子线程相互通信的方法
2019-04-29
Redis 六种淘汰策略和三种删除策略
2019-04-29
Java LinkedHashMap
2019-04-29
JPA 多线程同时对一条数据进行Update的问题
2019-04-29
JPA 多线程对数据进行更新,Update和Insert同时存在的问题
2019-04-29
Java 高性能队列Disruptor
2019-04-29
SpringBoot 使用https
2019-04-29
Java 读写锁
2019-04-29
JVM Minor GC、Full GC和Major GC
2019-04-29
SpringBoot @Scheduled 执行两次的问题
2019-04-29
tomcat配置JVM
2019-04-29
Ubuntu软件安装&卸载
2019-04-29
面试笔试易错知识点Java篇八
2019-04-29
弹性事务框架ETF4J——面向Java微服务的交易最终一致性解决方案
2019-04-29
【Scala 教程】Scala 条件与循环语句
2019-04-29
【Scala 教程】Scala 集合类型
2019-04-29