数据结构与算法(顺序表部分)小作业

Posted by Zexin Zhang on October 7, 2017

如何将一个顺序表中元素逆置

本来还想用笨方法的,奈何是学算法的,还是要更高的效率

#define maxlen 1000
typedef struct{
	Datatype data[maxlen];
	int last;
}SequenList;
SequenList x,*L;
void SquenListInvert(SequenList *L){
	int i,temp;
	int n=L->last;
	for(i=0;i<n/2;i++){
		temp=L->data[i];
		L->data[i]=L->data[n-i-1];
		L->data[n-i-1]=temp;
	}
}

顺序表按值查找(返回,从左到右,从右到左)

据说是二班学委记的题目,太模糊

void SqLlocate(SequenList *L,Datatype x){   //全部查找,从左到右
	int i,z=0;
	for(i=0;i<=L->last;i++){
		if(L->data[i]==x){
			printf("%d",i+1);
			z=1;
		}
		if(z==0){
			printf("-1");
		}
	}
}

void SqLlocate(SequenList *L,Datatype x){ //只查找一个,从左到右
	int i,z=0;
	for(i=0;i<=L->last;i++){
		if(L->data[i]==x){
			printf("%d",i+1);
			z=1;
			break;
		}
		if(z==0){
			printf("-1");
		}
	}
}
void SqLlocate(SequenList *L,Datatype x){. //查找全部,从右到左
	int i,z=0;
	for(i=L->last;i>=0;i--){
		if(L-data[i]==x){
			printf("%d",i+1);
			z=1;
		}
		if(z==0){
			printf("-1");
		}
	}
}
void SqLlocate(SequenList *L,Datatype x){. //只查找一个,从右到左
	int i,z=0;
	for(i=L->last;i>=0;i--){
		if(L-data[i]==x){
			printf("%d",i+1);
			z=1;
			break;
		}
		if(z==0){
			printf("-1");
		}
	}
}

建顺序表

SequenList *InitSequenList(){	SequenList *L;
	L=(SequenList *)malloc(sizeof(SequenList));
	L->last=-1;
	return L;
}

建链表

typedef struct node{
	int data;
	struct node *next;
}LinkList;
LinkList *L;
LinkList *InitLinkList(LinkList *L){
	free(L);
	L->next=NULL;
	return(L);
}