線性表操作

/***
name: create a seqlist
receive: seqlist address
return: int
***/
int creat(Seqlist* L){
	int len;
	L->length = 0;
	printf("Enter the length of the seqlist:");
	scanf("%d", &len);
	if (len <= 100){
		for (int i = 0; i < len; i++){
			printf("Enter the %d element of the seqlist:", (i + 1));
			scanf("%d", &(L->data[i]));
			L->length++;
		}
		return 0;
	}
	else{
		printf("the length overflow!");
		return -1;
	}
}

/***
name: print the seqlist
receive: seqlist
return: int
***/
int show(Seqlist L){
	if (L.length > 0){
		for (int i = 0; i < (L.length); i++)
			printf("%d ", L.data[i]);
		printf("\n");
		return 0;
	}
	else{
		printf("The seqlist is empty!");
		return -1;
	}
}

/***
name: get a element of the seqlist
reveive: seqlist, position
returen: int
***/
int getelement(Seqlist L, int locate){
	if (locate <= L.length)
		return L.data[locate - 1];
	return -1;
}

/***
name: insert a data to the seqlist
receive: seqlist address, insert position, insert data
return: int
***/
int insert(Seqlist *L, int locate, int element){
	if ((L->length) < 100){
		for (int i = (L->length); i>locate; i--)
			L->data[i] = L->data[i - 1];
		L->data[locate] = element;
		L->length++;
		return 0;
	}
	else{
		printf("seqlist is full!");
		return -1;
	}
}

/***
name: delete a element from the seqlist
receive: seqlist address, element
return int
***/
int delete_by_element(Seqlist* L, int element){
	for (int i = 0; i < L->length; i++){
		if (L->data[i] == element){
			for (int j = i; j < L->length; j++){
				L->data[j] = L->data[j + 1];
			}
		}
	}
	L->length--;
	return 0;
}

/***
name: delete a element from the seqlist
receive: seqlist address, position
return: int
***/
int delete_by_position(Seqlist* L, int locate){
	if (locate < L->length){
		for (int i = (locate-1); i < L->length; i++){
			L->data[i] = L->data[i + 1];
		}
	}
	L->length--;
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章