1 线性表-----顺序表

线性表-----顺序表

#include <stdio.h>
#define max  10
//顺序表定义
typedef struct Sqlist{
	int data[max];
	int length;
}Sqlist; 
//初始化 
void initList(Sqlist &L) {
    L.length = 0;
}
//显示所有数据
 void display(Sqlist L){
 	printf("L.length=%d\n",L.length);
 	for(int i=0;i<L.length;i++)
 	{
 		printf("data[%d]=%d\n",i,L.data[i]);	
	}
 }
//求指定元素位置 的数 
int getElem(Sqlist L, int p, int &e){
	if(p<0||p>=L.length)
	return 0;
	e=L.data[p];
	return 1;
} 
//插入数据元素
int insertElem(Sqlist &L, int p, int e) {
	if(p<0||p>L.length||L.length>=max)
	return 0;
	for(int i=L.length-1;i>=p;i--)
	{
		L.data[i+1]=L.data[i];
	}
	L.data[p]=e;
	L.length++;
	return 1;
}
//按元素值查找(返回p) 
int findElem(Sqlist L, int e) {
	for(int i=0;i<L.length;i++)
	{
		if(L.data[i]==e)
		return i;
	} 
	return 0;
}
//删除数据元素
int deleteElem(Sqlist &L, int p, int &e)
{
	if(p<0||p>L.length)
	return 0;
	e=L.data[p];
	for(int i=p;i<L.length;i++)
	{
		L.data[i]=L.data[i+1];
	}
	--(L.length);	
	return 1;
}
//顺序表的元素逆置
void reverse(Sqlist &L)
{
	int temp;
	for(int i=0;i<L.length;i++)
	{
		temp=L.data[i];
		L.data[i]=L.data[L.length-i];
		L.data[L.length-i]=temp;
	}
}
//删除下标为i~j的数据元素
void deleteRange(Sqlist &L, int m, int n) {
	
	int i;
	for(i=m;i<L.length-n+m;i++)
	{
		L.data[i]=L.data[i+n-m+1];
	}
	L.length-=(n-m+1);
}

//快排
void partition(Sqlist &L, int l, int r)
{
	if(l>=r)
	{
		return ;
	}
	int i=l,j=r-1,temp;
	int key=L.data[l];
	while(i<j)
	{
		while(key<=L.data[j]&&i<j)
		{
			j--;
		}
		L.data[i]=L.data[j];
		
		while(L.data[i]<=key&&i<j)
		{
			i++;
		}
		L.data[j]=L.data[i];
	}
	L.data[i]=key;
	partition(L,l,i);
	partition(L,i+1,r);
	
			
} 

int main()
{
	Sqlist L;
	
	for(int i=0;i<10;i++)
	{
		L.data[i]=9-i;
	}
	L.length=10;
	display(L);
	//deleteRange(L, 1, 2) ;
	partition(L, 0, 10);
	display(L);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值