线性表 p35

1、顺序表用数组A[]表示,表中元素下标0~m+n-1,前m个后n个元素递增有序,设计算法使整个表有序

void Sort(int A[],int m,int n){
	int temp;
	for(int i=m;i<m+n;i++){
		temp=A[i];
		for(int j=i-1;j>0&&temp<A[i];j--)	A[j+1]=A[j];
		A[j]=temp;
	}
}

2、对两个递增有序的单链表AB(带有头结点,分别有mn个元素),设计算法求差集(A中有B中没有的),保存在A表中,并保持有序性。

void difference(Linklist &A,Linklist &B){
	 Lnode *pa=A->next,*pre=A,*temp,*pb=B->next;

	 while(pa&&pb){
	 	if(pb->data>pa->data){
	 		pre=pa;
	 		pa=pa->next; 		
		 }
		 else if(pa->data>pb->data){
		 	pb=pb->next;
		 }
		 else{
		 	temp=pa;
		 	pre->next=pa->next;
		 	pa=pa->next;
		 	free(temp);
		 }
	 }
}

3、逆置顺序表

4、顺序表中删除给定下标 i~j(包括i j  且i<=j)的所有元素,假定ij合法

5、快排划分操作:根据表头元素划分一次

void Quick_sort(Sqlist &l){
	int pivot=l.data[0];
	int low=0,high=l.length-1;
	
	while(low<high){
		while(low<high&&l.data[high]>pivot)  --high;
		if(low<high) l.data[low]=l.data[high];
		while(low<high&&l.data[low]<pivot)	++low;
		if(low<high) l.data[high]=l.data[low];
	}
	l.data[low]=pivot;
}

6、设计算法删除递增单链表中值域重复的结点

7、设计算法删除带头结点单链表的最小值元素

8、逆置带头结点的单链表,不能建立新节点

9、设计算法将带头结点的单链表分解为两个单链表,A表中只含有原表中data域为奇数的结点,B则是偶数,并保持原来的相对顺序

 

1、带头结点单链表,查找倒数第k个位置上的结点,成功则输出data值并返回1,否则返回0

2、n个整数放到数组R中,将R中的序列循环左移p个位置。

3、若整数序列中,元素值相同的元素个数>总数的一半,则称此元素为主元素。设计算法找序列的主元素,找到则返回元素值,否则返回-1.

int find_main(int A[],int n){
	int mainElem=A[0];
	int count=1;
	for(int i=1;i<n;i++){
		if(A[i]==mainElem){
			 count++;
		}
		else{
			if(count>0) count--;
			else{
				mainElem=A[i];
				count=1;
			}
		}
	}
	if(count>0){
		for(i=count=0;i<n;i++){
			if(A[i]==mainElem) count++;
		}
	}
	if(count>n/2) return mainElem;
	esle return -1;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值