顺序表的各种操作

/*编写程序 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);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值