<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>