/*編寫程序 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;
}
else
return;
}
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;
}
else
return;
}
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++;
}
else
printf("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 10
typedef 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);
順序表的各種操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.