博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
篇章二线性表---常见操作
阅读量:1887 次
发布时间:2019-04-26

本文共 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->data
data) { 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(i
temp) 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->data
data) { 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+nb
0) { 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;	}}

 

转载地址:http://pzzdf.baihongyu.com/

你可能感兴趣的文章
基于java的web聊天系统
查看>>
基于java的俄罗斯方块的设计与实现
查看>>
基于java的魂斗罗的设计
查看>>
基于java的网页内容管理
查看>>
基于java的学生管理系统
查看>>
基于java网盘搜索的设计与实现
查看>>
基于SSM的仿小米商城源码
查看>>
基于SSM的医院人事管理系统的设计与实现
查看>>
基于SSM的网上购物系统的设计与开发
查看>>
基于SSM框架的BS微博系统的设计与实现
查看>>
超市订单管理系统
查看>>
基于ssm的民宿网站
查看>>
基于JavaWeb的物流管理系统的设计与实现
查看>>
基于Java的飞机大战游戏的设计与实现论文
查看>>
基于java实现的超级马里奥游戏
查看>>
keepalived 实现高可用,负载均衡
查看>>
linux发送邮件通知
查看>>
linux不删除文件:替换rm命令
查看>>
Centos6 搭建lnmp环境
查看>>
Hbase优化:使用压缩snappy,lz4
查看>>