定长顺序表实现----源代码

#pragma once
typedef int DataType;
#define N 10

typedef struct SeqList{
   DataType _array[N];
   size_t _size;
}SeqList;

//增删查改
void SeqInit(SeqList* sq);
void SeqPushFront(SeqList* sq,DataType x);
void SeqPushBack(SeqList* sq,DataType x);
void SeqPopFront(SeqList* sq);
void SeqPopBack(SeqList* sq);

void SeqInsert(SeqList* sq,size_t pos,DataType x);
void SeqErase(SeqList* sq,size_t pos);

int SeqFind(SeqList* sq,DataType x);
void SeqMofity(SeqList* sq,size_t pos,DataType x);

void SeqInit(SeqList* sq){
	memset(sq->_array,0,sizeof(DataType)*N);
	sq->_size = 0;
}

void SeqPushFront(SeqList* sq,DataType x){
	assert(sq);
	if(sq->_size >= N){
	  printf("SeqList is full\n");
	  return;
	}else{
		int max = sq->_size - 1;
		while(max >= 0){
			sq->_array[max+1] = sq->_array[max];
			max--;
		}
		sq->_array[0] = x;
		sq->_size++;
	}
}

void SeqPushBack(SeqList* sq,DataType x){
	assert(sq);

	if(sq->_size >= N){
		printf("SeqList is full\n");
	}else{
		sq->_array[sq->_size] = x;
		sq->_size++;
	}
}

void SeqPopFront(SeqList* sq){
	int i = 1;
	assert(sq);
	for (;i < sq->_size; ++i)
	{
		sq->_array[i-1] = sq->_array[i];
	}

	--sq->_size;
}
void SeqPopBack(SeqList* sq){
	int i = 0;
	assert(sq);

	--sq->_size;
}

void SeqInsert(SeqList* sq,size_t pos,DataType x){
	assert(sq);
	if(sq->_size >= N){
		printf("SeqList is full\n");
	}else if(pos > N-1){
		printf("Pos is max");
	}else{
		int end = sq->_size-1;
		while(end >= pos){
			sq->_array[end+1] = sq->_array[end];
			--end;
		}
	}
	sq->_array[pos] = x;
	sq->_size++;
}
void SeqErase(SeqList* sq,size_t pos){
	int end = sq->_size-1;
	assert(sq);
	while(end >= pos){
		sq->_array[pos] = sq->_array[pos+1];
		end--;
	}
	sq->_size--;
}

int SeqFind(SeqList* sq,DataType x){
    int i = 0;
	assert(sq);
	for(i = 0;i < sq->_size;i++){
		if(sq->_array[i] == x)
		return i;
	}
	return -1;
}
void SeqMofity(SeqList* sq,size_t pos,DataType x){
	assert(sq);
	if(pos > N){
		printf("pop is max");
	}else{
		sq->_array[pos] = x;
	}
}

void SeqPrint(SeqList* sq)
{
	size_t i = 0;
	for ( ; i < sq->_size; ++i)
	{
		printf("%d ",sq->_array[i]);
	}
	printf("\n");
}

猜你喜欢

转载自blog.csdn.net/hgelin/article/details/84558189
今日推荐