顺序表的相关操作(初始化,插入,删除,清空,销毁)

#include <stdio.h>
#include <assert.h>

typedef int DataType; 

#define MAX_SIZE (100)

typedef struct SeqList { 
  DataType array[MAX_SIZE];
  int size;
  int i;
  int index;
} SeqList ; 

//初始化
void SeqListInit(SeqList *pSL)
{
	assert(pSL != NULL);
	pSL->size = 0;
}

// 尾部插入 
void SListPushBack(SeqList *pSL, DataType data) 
{
	pSL->array[pSL->size++] = data;
}


 //头部插入 
void SListPushFront(SeqList *pSL, DataType data)
{
  int i;
    for(i=0; i<pSL->size; i++)
	{
		pSL->array[pSL->size-i]=pSL->array[pSL->size-i-1];
		
	}
	pSL->array[0]=data;
	pSL->size++;
}
//给定位置插入
void SListInsert(SeqList *pSL,int pos, DataType data)
{
	int i;
	assert(pSL != NULL);
	assert(pSL -> size < MAX_SIZE);
	assert(pos>=0 &&pos<=pSL->size);
	for(i=0; i<pSL->size-pos; i++)
	{
		pSL->array[pSL->size-i] = pSL->array[pSL->size-i-1];
	}
	pSL->array[pos]=data;
	pSL->size++;

}

// 尾部删除 
void SListPopBack(SeqList *pSL)
{
	assert(pSL);
  pSL->array[pSL->size] = NULL;
  pSL->size--;
}
 
//头删
void SListPopFront(SeqList *pSL) 
{
	int i;
	assert(pSL != NULL);
	assert(pSL->size>0);
    pSL->size--;
	for(i=0; i<pSL->size; i++)
	{
		pSL->array[i] = pSL->array[i+1];
	}
	
}

//指定位置删除
void SListErase(SeqList *pSL, int pos) 
{
	int i;
    assert(pSL != NULL);
	assert(pSL -> size < MAX_SIZE);
	assert(pos>=0 &&pos<=pSL->size);
	pSL->size--;
	for(i=0; i<pSL->size-pos; i++)
	{
		pSL->array[pos+i] = pSL->array[pos+i+1];
	}
}

// 按值查找,返回第一个找到的下标,如果没找到,返回 -1 
int SeqListFind(SeqList *pSL, DataType data)
{
	int i;
	for(i=0; i<pSL->size; i++)
	{
		if(pSL->array[i]==data)
		{return (i);}
	}
	return -1;
}

// 按值删除,只删遇到的第一个 
void SeqListRemove(SeqList *pSL, DataType data)
{
	int index;
	index = SeqListFind(pSL,data);
	if(index != -1)
	{
		SListErase(pSL,index);
	}
}

// 按值删除,删除所有的 
void SeqListRemoveAll(SeqList *pSL, DataType data)
{
	int index;
	while((index = SeqListFind(pSL,data)) != -1)
	{
		SListErase(pSL,index);
	}
}

// 清空 
void SeqListClear(SeqList *pSL)
{
	int i;
	assert(pSL);
	for(i=0; i<pSL->size; i++)
	{
		pSL->array[i]=0;
	}
}

// 判断是否为空,1 表示空, 0 表示不空 
int SeqListEmpty(SeqList *pSL)
{
	int index;
	index = pSL->size >0?0:1;
	printf("%d\n",index);
	return 0;
}

// 判断是否为满,1表示满,0表示未满
int SeqListIsFull(SeqList *pSL)
{
	int index;
	index = pSL->size <MAX_SIZE?0:1;
	printf("%d\n",index);
	return 0;
}

 //返回数量 
int SeqListSize(SeqList *pSL)
{
	int index;
	index = pSL->size;
	printf("%d\n",index);
	return 0;
}

// 销毁 
void SeqListDestroy(SeqList *pSL)
{
	assert(pSL);
	pSL->size = 0;
}

void SeqListPrint(SeqList *pSL)
{
	int i = 0;
	for(i=0; i<pSL->size; i++)
	{
		printf("%d ",pSL->array[i]);
	}
	printf("\n");
}
void TestSeqList()
{
	SeqList s1;
	SeqListInit(&s1);
        SListPushBack(&s1,1);
	SListPushBack(&s1,2);
	SListPushBack(&s1,3);
	SListPushBack(&s1,4);
	SListPushBack(&s1,5);
	SListPushBack(&s1,6);
	SeqListPrint(&s1);

	SeqList s2;
	SeqListInit(&s2);
	SListPushFront(&s2,1);
	SListPushFront(&s2,2);
	SListPushFront(&s2,3);
	SListPushFront(&s2,4);
	SListPushFront(&s2,5);
	SListPushFront(&s2,6);
	SListPushFront(&s2,7);
	SeqListPrint(&s2);

        SeqList s3;
	SeqListInit(&s3);
        SListPushBack(&s3,1);
	SListPushBack(&s3,2);
	SListPushBack(&s3,3);
	SListPushBack(&s3,4);
	SListPushBack(&s3,5);
	SListPushBack(&s3,6);
	SListPopBack(&s3);
	SeqListPrint(&s3);

	SeqList s4;
	SeqListInit(&s4);
	SListPushBack(&s4,1);
	SListPushBack(&s4,2);
	SListPushBack(&s4,3);
	SListPushBack(&s4,4);
	SListPushBack(&s4,5);
	SListPushBack(&s4,6);
	SListInsert(&s4,3,0);
	SeqListPrint(&s4);

        SeqList s5;
	SeqListInit(&s5);
	SListPushBack(&s5,1);
	SListPushBack(&s5,2);
	SListPushBack(&s5,3);
	SListPushBack(&s5,4);
	SListPushBack(&s5,5);
	SListPushBack(&s5,6);
	SListPopFront(&s5);
	SeqListPrint(&s5);
 
	SeqList s6;
	SeqListInit(&s6);
	SListPushBack(&s6,1);
	SListPushBack(&s6,2);
	SListPushBack(&s6,3);
	SListPushBack(&s6,4);
	SListPushBack(&s6,5);
	SListPushBack(&s6,6);
	SListErase(&s6,3);
	SeqListPrint(&s6);
 
	SeqList s7;
	SeqListInit(&s7);
	SListPushBack(&s7,2);
	SListPushBack(&s7,1);
	SListPushBack(&s7,3);
	SListPushBack(&s7,1);
	SListPushBack(&s7,1);
	SListPushBack(&s7,3);
	SeqListFind(&s7,1);
	SeqListRemove(&s7,1);
	SeqListPrint(&s7);
 
	SeqList s8;
	SeqListInit(&s8);
	SListPushBack(&s8,2);
	SListPushBack(&s8,1);
	SListPushBack(&s8,3);
	SListPushBack(&s8,1);
	SListPushBack(&s8,1);
	SListPushBack(&s8,3);
	SeqListFind(&s8,1);
	SeqListRemoveAll(&s8,1);
	SeqListPrint(&s8);
	
	SeqList s9;
	SeqListInit(&s9);
	SListPushBack(&s9,2);
	SListPushBack(&s9,1);
	SListPushBack(&s9,3);
	SListPushBack(&s9,1);
	SListPushBack(&s9,1);
	SListPushBack(&s9,3);
	SeqListClear(&s9);
	SeqListPrint(&s9);
	
        SeqList s10;
	SeqListInit(&s10);
	SListPushBack(&s10,2);
	SListPushBack(&s10,1);
	SListPushBack(&s10,3);
	SListPushBack(&s10,1);
	SListPushBack(&s10,1);
	SListPushBack(&s10,3);
	SeqListEmpty(&s10);

	SeqList s11;
	SeqListInit(&s11);
	SListPushBack(&s11,2);
	SListPushBack(&s11,1);
	SListPushBack(&s11,3);
	SListPushBack(&s11,1);
	SListPushBack(&s11,1);
	SListPushBack(&s11,3);
	SeqListIsFull(&s11);

        SeqList s12;
	SeqListInit(&s12);
	SListPushBack(&s12,2);
	SListPushBack(&s12,1);
	SListPushBack(&s12,3);
	SListPushBack(&s12,1);
	SListPushBack(&s12,1);
	SListPushBack(&s12,3);
	SeqListSize(&s12);

        SeqList s13;
	SeqListInit(&s13);
	SListPushBack(&s13,2);
	SListPushBack(&s13,1);
	SListPushBack(&s13,3);
	SListPushBack(&s13,1);
	SListPushBack(&s13,1);
	SListPushBack(&s13,3);
	SeqListDestroy(&s13);

}


int main()
{
	TestSeqList();
	return 0;
	
}

猜你喜欢

转载自blog.csdn.net/zr147258369/article/details/80780071