顺序表的各种操作

来源:互联网 发布:sjcam sj5000x淘宝 编辑:程序博客网 时间:2024/05/01 06:25
/*编写程序 1 参数检测           2 边界条件检查   3 逻辑条件检查 */#include"Sequlist.h"#include<assert.h>#include<stdio.h>#include<stdlib.h>int Empty(PSeqList pSeqList)//清空{int i=0;assert(pSeqList);pSeqList->size=0;for(i=0;i<MAX_SIZE;i++)pSeqList->array[i]=0;return ;}void InitSeqList(PSeqList seq)//初始化{int i=0;//assert(seq);//断言for(i=0;i<5;i++)//循环给array赋值seq->array[i]=i;seq->size=5;return ;}void PushBack(PSeqList pSepList, DataType data)//尾插法{assert(pSepList);if(pSepList->size-1<MAX_SIZE){pSepList->array[pSepList->size]=data;pSepList->size=pSepList->size+1;}elsereturn;}void PopBack(PSeqList pSeqList){int i=pSeqList->size-1;assert(pSeqList);for( ;i>=0;i--)printf("%d",pSeqList->array[i]);}void PushFront(PSeqList pSeqList, DataType data)//头插法{int i= pSeqList->size;assert(pSeqList);if( pSeqList->size-1<MAX_SIZE){for( ;i>=0;i--)pSeqList->array[i+1]=pSeqList->array[i];pSeqList->array[0]=data;pSeqList->size=pSeqList->size+1;}elsereturn;}void PopFront(PSeqList pSeqList){int i=0;assert(pSeqList);for( ;i<pSeqList->size ;i++)printf("%d",pSeqList->array[i]);}void Insert(PSeqList pSeqList, int pos, DataType data)//插入指定数据到指定位置{int i=pSeqList->size-1;assert(pSeqList);if(pos<MAX_SIZE){for( ; i>=pos; i--){pSeqList->array[i+1]=pSeqList->array[i];pSeqList->size++;}pSeqList->array[pos]=data;pSeqList->size++;}elseprintf("fu l l!!!\n");}void Erase(PSeqList pSeqList, int pos)//删除指定位置上的数据{int i=0;assert(pSeqList);if(pos<pSeqList->size-1){ for( i=pos; i<pSeqList->size; i++){pSeqList->array[i]=pSeqList->array[i+1];} pSeqList->size--;}}int Find(PSeqList pSeqList, DataType data)//查找数据{int i=0;assert(pSeqList);for(  ; i<pSeqList->size; i++)         {             if(pSeqList->array[i]==data)    printf("查到了,它的位置:%d\n",i);}return 0;}int Find_data_num(PSeqList pSeqList, DataType data)//查找某个数据出现的次数{int i=0;int sz=0;assert(pSeqList);for(  ; i<pSeqList->size; i++)         {             if(pSeqList->array[i]==data)    sz++;   }return sz;}void Remove(PSeqList pSeqList, DataType data)//删除指定数据{int i=0;assert(pSeqList); if(pSeqList->size==0)            printf("顺序表已空!\n");      else      {           for(i=0; i<pSeqList->size; i++)         {             if(pSeqList->array[i]==data)             {                 pSeqList->array[i]=pSeqList->array[i+1];             }         }         pSeqList->size--;      }}void RemoveAll(PSeqList pSeqList, DataType data){   int i=0;assert(pSeqList); if(pSeqList->size==0)            printf("顺序表已空!\n");      else  {if(Find_data_num(pSeqList,data)==0)printf("没有这个数据!\n");else{while(i!= Find_data_num(pSeqList,data))Remove( pSeqList,  data);printf("删除完毕\n");} }}int main(){PSeqList p=malloc(sizeof(char)*100);if(p!=NULL)//动态申请的,一定要判断是否为NULL{DataType data;Empty(p);InitSeqList(p);scanf("%d",&data);//PushFront(p,data);//PopFront(p);Find(p,  data);system("pause");free(p);}return 0;}//接下来是头文件部分<pre name="code" class="cpp">#define  MAX_SIZE 10typedef int DataType;typedef struct SeqList{DataType array[MAX_SIZE];int size;     // 记录有效元素的个数}SeqList,*PSeqList;void InitSeqList(PSeqList seq);void PushBack(PSeqList pSepList, DataType data);void PopBack(PSeqList pSeqList);void PushFront(PSeqList pSeqList, 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 PrintSeqList(PSeqList pSeqList);


0 0
原创粉丝点击