静态顺序表

<span style="font-size:18px;">SeqList.h
#include<stdio.h>
#include <process.h>
#include <memory.h>

#define MAX_SIZE 100
typedef int DataType;
typedef struct Seqlist
{
    DataType arr[MAX_SIZE];//顺序表的最大容量
   int sz;//当前顺序表的容量
}Seqlist,*PSeqList;
void InitSeqList(PSeqList seq);
void PushBack(PSeqList pSepList, DataType data);
void PopBack(PSeqList pSeqList);
void PushFront(PSeqList pSepList, DataType data);
void PopFront(PSeqList pSeqList);
void Insert(PSeqList pSeqList, int pos, DataType data);
void Erase(PSeqList pSeqList, int pos);
int Find(PSeqList pSeqList, DataType data);
void Remove(PSeqList PseqList, DataType data);
void RemoveAll(PSeqList pSeqList, DataType data);
int Empty(PSeqList pSeqList);
void Clear(PSeqList pSeqList);
void BubbleSort(PSeqList pSeqList);
void SelectSort(PSeqList pSeqList);
int BinarySearch(PSeqList pSeqList,DataType data);
int Size(PSeqList pSeqList);
void PrintSeqList(PSeqList pSeqList);

SeqList.c
#include"SeqList.h"
void InitSeqList(PSeqList seq)//初始化顺序表
{
	seq->sz=0;
	memset(seq->arr,0,MAX_SIZE*(sizeof(DataType)));
}
void PushBack(PSeqList pSepList, DataType data)//尾部插入一个元素
{
	if(pSepList->sz==MAX_SIZE)
	{
	printf("顺序表已满");
	return;
	}
	else
	{
	pSepList->arr[pSepList->sz]=data;
	pSepList->sz++;
	}
}
void PopBack(PSeqList pSeqList)//尾部删除一个元素
{
	if(pSeqList->sz ==0)
	{
	printf("顺序表已空");
		return ;
	}
	else
	{
	pSeqList->sz--;
	}
}
void PushFront(PSeqList pSepList, DataType data)//首部插入一个元素
{
	int i=0;
	if(pSepList->sz==MAX_SIZE)
	{
	printf("顺序表已满");
	return;
	}
	else
	{
	  for(i=0;i<pSepList->sz;i++)
	  {
	   pSepList->arr[pSepList->sz-i]=pSepList->arr[pSepList->sz-i-1];
	  }
	  pSepList->arr[0]=data;
	pSepList->sz++;
	}

}
void PopFront(PSeqList pSeqList)//首部删除一个元素
{
	int i=0;
	if(pSeqList->sz ==0)
	{
	printf("顺序表已空");
		return ;
	}
	else
	{
		for(i=0;i<pSeqList->sz-1;i++)
		{
		pSeqList->arr[i]=pSeqList->arr[i+1];
		}
	pSeqList->sz--;
	}
}
void Insert(PSeqList pSeqList, int pos, DataType data)//指定位置插入
{
	int i=0;
	if(pSeqList->sz==MAX_SIZE)
	{
		printf("顺序表已满");
	return;
	}
	else
	{
	for(i=0;i<pSeqList->sz-pos+1;i++)
	{
	 pSeqList->arr[pSeqList->sz-i]=pSeqList->arr[pSeqList->sz-i-1];
	}
	pSeqList->sz++;
	pSeqList->arr[pos-1]=data;
	}
}
void Erase(PSeqList pSeqList, int pos)//指定位置删除
{
	int i=0;
	if(pSeqList->sz ==0)
	{
	printf("顺序表已空");
		return ;
	}
	else
	{
		for(i=0;i<pSeqList->sz-pos;i++)
		{
		pSeqList->arr[pos-1+i]=pSeqList->arr[pos+i];
		}
	pSeqList->sz--;
	}

}
int Find(PSeqList pSeqList, DataType data)//查找指定元素
{
	int i=0;
	if(pSeqList->sz==0)
	{
	printf("顺序表已空");
	}
	else
	{
	 for(i=0;i<pSeqList->sz;i++)
	 {
	  if(data==pSeqList->arr[i])
		return i;
	 }
	 return -1;
	}
}
void Remove(PSeqList PseqList, DataType data)//删除指定元素
{
	int i=0;
	int ret=Find(PseqList, data);
	if(ret==-1)
	{
	printf("指定元素不存在");
	}
	else
	{
	for(i=0;i<PseqList->sz-ret;i++)
		{
		PseqList->arr[ret+i]=PseqList->arr[ret+i+1];
		}
	PseqList->sz--;
	}
}
void RemoveAll(PSeqList pSeqList, DataType data)//移除全部指定元素
{
	int count=0;
	int i=0,j=0;
	for(i=0;i<pSeqList->sz;i++)
	{
	if(data==pSeqList->arr [i])
	{
			count++;
	for(j=i;j<pSeqList->sz-i;j++)
	{
		pSeqList->arr[j]=pSeqList->arr[j+1];
	}
	}
	}
	pSeqList->sz-=count;
	/*for(i=0;i<pSeqList->sz;i++)
	{
	if(data==pSeqList->arr [i])
		Remove( pSeqList, data);
	}*/
}
int Empty(PSeqList pSeqList)//清空
{
	if(pSeqList->sz==0)
		return -1;
	else
		return 1;
}
void Clear(PSeqList pSeqList)
{
	InitSeqList(pSeqList);
}
void BubbleSort(PSeqList pSeqList)//冒泡排序
{
	int i=0,j=0;
	int tmp=0;
	int flag=0;
	for(i=0;i<pSeqList->sz;i++)
	{
	 for(j=0;j<pSeqList->sz-i-1;j++)
	 {
	  if(pSeqList->arr[j]>pSeqList->arr[j+1])
	   {
	   tmp=pSeqList->arr[j];
	   pSeqList->arr[j]=pSeqList->arr[j+1];
  	   pSeqList->arr[j+1]=tmp;
	   flag=1;
	   }

	 }
	 if(flag==0)
		 return;
	}
}
void SelectSort(PSeqList pSeqList)//选择排序
{
	int i=0,j=0,k=0;
	int tmp=0;
	for(i=0;i<pSeqList->sz ;i++)
	{
		k=i;
	for(j=0;j<pSeqList->sz ;j++)
	{

	if(pSeqList->arr[k]<pSeqList->arr[j])
	{
		k=j;
	 tmp=pSeqList->arr[i];
	   pSeqList->arr[i]=pSeqList->arr[j];
  	   pSeqList->arr[j]=tmp;
	}
	}
	}
}
int BinarySearch(PSeqList pSeqList, DataType data)//二分查找
{
	int left=0;
	int right=pSeqList->sz -1;
	int mid=0;
	/*Seqlist seqlist;
	BubbleSort(&seqlist);*/
	/*BubbleSort(pSeqList);*///二分查找的对象为有序序列
	while(left<=right)
	{
		mid=(left+right)>>1;
	if(data>pSeqList->arr [mid])
	{
	 left=mid+1;
	}
	else if(data<pSeqList->arr [mid])
	{
	 right=mid-1;
	}
	else
		{
			return mid;
	}
	
	}
	return -1;
}
int Size(PSeqList pSeqList)//当前顺序表大小
{
	return pSeqList->sz ;
}
void PrintSeqList(PSeqList pSeqList)//打印
{
	int i=0;
	for(i=0;i<pSeqList->sz ;i++)
	{
	printf("%d ",pSeqList->arr[i]);
	}
	printf("\n");
}
test.c
#include"SeqList.h"

Seqlist seqlist;
int main()
{
	InitSeqList(&seqlist);
	PushBack(&seqlist , 2);
	PushBack(&seqlist , 3);
	PushBack(&seqlist , 4);
	PushBack(&seqlist , 5);
	/*PushBack(&seqlist , 4);
	PushBack(&seqlist , 7);
	PushBack(&seqlist , 4);*/
	PrintSeqList(&seqlist);
	/* PopBack(&seqlist);*/
	/* PushFront(&seqlist, 6);*/
	/*PopFront(&seqlist);*/
	/*Insert(&seqlist,5,6);*/
	//PrintSeqList(&seqlist);
	//Erase(&seqlist, 3);
	//printf("%d\n",Find(&seqlist, 5));
	/*Remove(&seqlist,5);
	PrintSeqList(&seqlist);*/
	/*RemoveAll(&seqlist,4);*/
	/*BubbleSort(&seqlist);*/
	printf("%d\n",BinarySearch(&seqlist,3));
	/*SelectSort(&seqlist);*/
	/*PrintSeqList(&seqlist);*/
	
	/*printf("%d\n",Size(&seqlist));*/
	system("pause");
	return 0;
}</span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值