# include <stdio.h>
# include<string.h>
# include<memory.h>
# include<assert.h>
# define MAX_SIZE 100
typedef int DataType;
typedef struct SeqList
{
DataType arry[MAX_SIZE];
size_t size;
}SeqList;//定义一个结构体顺序表
void InitSeqList(SeqList * pSeq)
{
memset(pSeq->arry,0,sizeof(DataType)*MAX_SIZE);//初始化顺序表
pSeq->size=0;
}
void PushBack(SeqList *pSeq,DataType x)
{
assert(pSeq);
if(pSeq->size>=MAX_SIZE)
{
printf("The SeqLiist is full");//一个个的对顺序表赋值
return ;
}
pSeq->arry[pSeq->size++]=x;
}
void PopBack(SeqList *pSeq)
{
assert(pSeq);
pSeq->size--;//一个个的从末尾删除
}
void Erase(SeqList *s,size_t pos)
{
assert(s);
if(pos>=s->size)
{
printf("over the max data!");
return;
}
while(pos++<(s->size-1))
{
s->arry[pos]=s->arry[pos+1];//删除指定位置的值
}
}
void Remove(SeqList *s,DataType x)
{
assert(s);
DataType i,j;//删除第一个x
for(i=0;i<s->size;i++)
{
if(x==s->arry[i])
{
break;
}
}
if((i==s->size-1)&&(s->arry[i]!=x))
{
printf("顺序表中没有找到x");
}
else
{
for(j=i;j<s->size;j++)
{
s->arry[i]=s->arry[i+1];
}
}
s->size--;
}
void RemoveAll(SeqList*s,DataType x)
{
int i,j,count=0;
assert(s);//删除所有的x
for(i=0;i<s->size;i++)
{
if(x==s->arry[i])
{
for(j=i;j<s->size;j++)
{
s->arry[i]=s->arry[i+1];
}
count++;
}
else
{
if((i==s->size-1)&&(s->arry[i]!=x)&&(count==0))
{
printf("顺序表中没有找到x");
}
}
}
s->size=s->size-count;
}
void Sort(SeqList *s)
{ assert(s);
int i,j,temp;//冒泡排序
for(i=0;i<s->size;i++)
{
for(j=s->size-1;j>=i;j--)
{
if(s->arry[j]<s->arry[j-1])
{
temp=s->arry[j];
s->arry[j]=s->arry[j-1];
s->arry[j-1]=temp;
}
}
}
}
void output(SeqList *s)
{
assert(s);
int i=0;
for(i=0;i<s->size;i++)
{
printf("%d ",s->arry[i]);
}
}
int main()
{
SeqList L;
InitSeqList(&L);
PushBack(&L,3);
PushBack(&L,7);
PushBack(&L,1);
PushBack(&L,12);
PushBack(&L,3);
PushBack(&L,3);
PushBack(&L,2);
PushBack(&L,1);
PopBack(&L);
Erase(&L,1);
Remove(&L,12);
RemoveAll(&L,3);
Sort(&L);
output(&L);
return (0);
}
本文出自 “It技术笔记” 博客,谢绝转载!
原文地址:http://renchunlin.blog.51cto.com/10791467/1712334