順序表的各種操作

/*編寫程序 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);



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章