静态顺序表

来源:互联网 发布:linux的dd创建多个文件 编辑:程序博客网 时间:2024/06/02 02:19
<span style="font-size:18px;">SeqList.h#include<stdio.h>#include <process.h>#include <memory.h>#define MAX_SIZE 100typedef 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;elsereturn 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>

0 0