数据结构-顺序表作业2

实现顺序表的以下操作 

#pragma once 

#include  #define SeqListMaxSize 1000  typedef char SeqType;  typedef struct SeqList {  SeqType data[SeqListMaxSize];  size_t size;  } SeqList;  /**  * @brief 给一个顺序表进行初始化  *  * @param seq 表示一个顺序表结构的指针  */  void SeqListInit(SeqList* seq);  /**  * @brief 将一个元素插入到顺序表的末尾  *  * @param seq 顺序表结构的指针  * @param value 新插入的值  */  void SeqListPushBack(SeqList* seq, SeqType value);  /**  * @brief 将顺序表的最后一个元素删除  *  * @param seq 顺序表结构的指针  */  void SeqListPopBack(SeqList* seq);  /**  * @brief 往顺序表的前面插入一个元素  *  * @param seq 顺序表结构的指针  * @param value 新插入的值  */  void SeqListPushFront(SeqList* seq, SeqType value);  /**  * @brief 删除顺序表的第一个元素  *  * @param seq 顺序表结构的指针  */  void SeqListPopFront(SeqList* seq);  /**  * @brief 取顺序表中任意位置的一个元素  *  * @param seq 顺序表的指针  * @param pos 要取的元素的下标  * @param default_value 如果取元素失败, 就返回这个值  *  * @return 对应下标位置的元素的值  */  SeqType SeqListGet(SeqList* seq, size_t pos, SeqType default_value);  /**  * @brief 将顺序表中指定位置的值进行设置  *  * @param seq 顺序表的结构指针  * @param pos 要修改的顺序表的元素位置  * @param value 要设置的值.  */  void SeqListSet(SeqList* seq, size_t pos,  SeqType value);  /**  * @brief 查找顺序表中指定元素的下标  *  * @param seq 顺序表结构指针  * @param value 要查找的值  *  * @return 对应值的下标. 如果找不到, 就返回  * (size_t)-1  */  size_t SeqListFind(SeqList* seq, SeqType value);  /**  * @brief 在指定位置插入元素  *  * @param seq 顺序表指针  * @param pos 要插入的位置  * @param value 要插入的值.  */  void SeqListInsert(SeqList* seq, size_t pos,  SeqType value);  /**  * @brief 删除指定位置的元素  *  * @param seq 顺序表指针  * @param pos 要删除的元素位置  */  void SeqListErase(SeqList* seq, size_t pos);  /**  * @brief 删除顺序表中指定的值, 如果存在重复元素, 只删除第一个  *  * @param seq 顺序表指针  * @param to_delete 待删除的值  */  void SeqListRemove(SeqList* seq, SeqType to_delete);  /**  * @brief 删除顺序表中所有的指定的值, 另外要实现一个时间复杂度为 O(N) 的优化版本  *  * @param seq 顺序表指针  * @param to_delete 待删除的元素  */  void SeqListRemoveAll(SeqList* seq, SeqType to_delete);  /**  * @brief 获取顺序表元素个数  *  * @param seq 顺序表指针  *  * @return 顺序表元素的个数  */  size_t SeqListSize(SeqList* seq);  /**  * @brief 判定顺序表是否为空  *  * @param seq 顺序表指针  *  * @return 如果顺序表为空, 返回 1; 否则返回 0  */  int SeqListEmpty(SeqList* seq);  /**  * @brief 冒泡排序  *  * @param seq 顺序表指针  */  void SeqListBubbleSort(SeqList* seq);  /**  * @brief 冒泡排序  *  * @param seq 顺序表指针  */  void SeqListBubbleSortEx(SeqList* seq, int (*cmp)(SType , SType)); 

#include<stdio.h>
#include"seqlist.h"
void SeqlistInit(Seqlist *seqlist){
	if (seqlist == NULL)
		return;
	Seqlist->size=0;
}

void SeqlistPuchBack(Seqlist *seqlist,SeqlistType value){	
	if (seqlist == NULL)
		return;
	if(Seqlist->size >= SeqlistMaxSize)
		return;
	Seqlist->data[Seqlist->size] == value;
	++Seqlist->size;
}

void SeqlistPopBack(Seqlist *seqlist){
	if (seqlist == NULL)
		return;
	if (Seqlist->size == 0)
		ruturn ;
	--Seqlist->size;
}

void SeqlistPushFront(Seqlist *seqlist,SeqlistType value){
	if (seqlist == NULL)
		return;
	if (Seqlist->size >= SeqlistMaxSize)
		return;
	++Seqlist->size;
	size_t i=Seqlist->size -1;
	for(;i>0;--i){
		Seqlist->data[i]=Seqlist->data[i-1];
	}
	Seqlist->data[0]=value;
}

void SeqlistPopFront(Seqlist *seqlist){
	if (seqlist == NULL)
		return;
	if (Seqlist->size == 0)
		return ;
	size_t i = 0;
	for(;i<Seqlist->size-1;++i){
		Seqlist->data[i]=Seqlist->data[i+1];
}

void SeqlistGet(Seqlist *seqlist,size_t pos){
	if (seqlist == NULL)
		return;
	if (pos >= Seqlist->size)
		return -1;
	return Seqlist->data[pos];
}

void SeqlistSet(Seqlist *seqlist,size_t pos, SeqlistType *value){
	if (seqlist == NULL)
		return;
	if (pos >= Seqlist->size)
		return;
	Seqlist->data[pos]=*value;
}

void SeqlistFind(Seqlist *seqlist.SeqlistType value){
	if (seqlist == NULL)
		return;
	size_t i=0;
	for(;i<Seqlist->size;i++){
		if (Seqlist->data[i] == value)
			return i;
	}
	return -1;
}	

void SeqlistInsert(Seqlist *seqlist,size_t pos, SeqlistType value){
	if (seqlist == NULL)
		return;
	if (pos > Seqlist->size)
		return;
	if(Seqlist->size>=SeqlistMaxSize)
		return;
	if(Seqlist->size == 0)
		SeqlistPushFront(seqlist,value);
	++Seqlist->size;
	size_t i=Seqlist->size-1;
	for(;i>=pos;--i){
		Seqlist->data[i]=Seqlist->data[i-1];
	}
	Seqlist->data[pos]=value;
}

void SeqlistErase(Seqlist *seqlist,size_t pos){
	if(seqlist == NULL)
		return;
	if(pos >=  Seqlist->size)
		return;
	size_t i =pos;
	for(;i<Seqlist->size-1;++i){
		Seqlist->data[i]=Seqlist->data[i+1];
	}
	--Seqlist->size;
}

void SeqlistRemove(Seqlist *seqlist.SeqlistType to_delete){	
	if(seqlist == NULL)
		return;
	size_t pos=SeqlistFind(seqlist,to_delete);
	if (pos == -1)
		return;
	SeqlistErase(seqlist,pos);
}

void SeqlistRemoveAll(Seqlist *seqlist,SeqlistType to_delete){
	if(seqlist == NULL)
		return;
	size_t i=Seqlist->size;
	size_t j=0;
	size_t pos=0;
	size_t to_delete_pos[i]=[];
	while(1){
		pos=SeqlistFind(seqlist.to_delete);
		if(pos == -1)
			break;
		else
			to_delete_pos[j]=pos;
			j++;
	}
	for(;j>0;--j){
		SeqlistErase(seqlist.*to_delete_pos[j]);
	}
}

size_t SeqlistSize(Seqlist *seqlist){
	if (seqlist == NULL)
		return;
	return Seqlist->size;
}

int SeqlistEmpty(Seqlist *seqlist){
	if (seqlist == NULL)
		return;
	if(Seqlist->size == 0)
		return 1;
	else
		return 0;
}

void SeqlistBubbleSort(Seqlist *seqlist){
	if (seqlist == NULL)
		return;
	size_t count = 0;
	size_t temp;
	for(;count<Seqlist->size;count++){
		for(size_t cur=0;count<Seqlist->size-cur-1;cur++){
			if(Seqlist->data[count]>Seqlist->data[cur])
				temp=Seqlist->data[count];
				Seqlist->data[data]=Seqlist->data[cur];
				Seqlist->data[cur]=temp;
		}
	}
}

BubbleSoryEx TODO


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值