线性表的基本操作步骤及其实现

这篇博客介绍了线性表的五个基本操作:初始化、取值、查找、插入和删除的实现过程。通过示例代码详细讲解了每个操作的具体步骤,并提供了测试函数来验证操作的正确性。
摘要由CSDN通过智能技术生成

以下是一个对线性表的初始化、取值、查找、插入和删除的实现过程,接下来我们主要讨论这5个主要操作的实现。现在我们来单独看一下每一个操作是怎么实现的。

(1)初始化

顺序表的初始化操作就是构造出一个空的顺序表,首先我们对顺序表进行初始化,代码如下:

typedef struct SequentialList
 {
 	int actualLength;//定义最初始的实际长度 
 	int data[LIST_MAX_LENGTH];//最大长度 
 }*SequentialListPtr;

(2)取值

接下来就是取值,我们需要输出顺序表的顺序,可以通过设计一个函数来进行判断,是否可以装下顺序表的实际长度。代码:

void outputList(SequentialListPtr paraList)//设计一个函数,输出所有包含的顺序表,并进行判断是否可以装下整个线性表的实际长度 
 {
 	for(int i=0;i<paraList->actualLength;i++)
 	{
 		printf("%d",paraList->data[i]);
	 }//of for i
	 printf("\r\n");
  }

此外,我们还需要把每一块的地址给打印出来:

void outputmemory(SequentialListPtr paraListPtr)
  
  {
  	printf("the address of the structure: %ld\r\n",paraListPtr);
  	printf("the address of the actualLength: %ld\r\n",&paraListPtr->actualLength);
  	printf("the address of the data: %ld\r\n",&paraListPtr->data);
  	printf("the address of the actual data: %ld\r\n",&paraListPtr->data[0]);
  	printf("the address of the second data: %d\r\n",&paraListPtr->data[1]);
   }//of outputmemory

我们将地址存放到data数组中,以此查找:

	SequentialListPtr sequentialListInit(int paraData[],int paraLength)
	{
		SequentialListPtr resultPtr = (SequentialList*)malloc(sizeof(SequentialList));
		for (int i=0;i<paraLength;i++)
		{
			resultPtr->data[i]=paraData[i];
		}//of for i
		resultPtr->actualLength = paraLength;
		return resultPtr;
	}//of sequentialListInit

(3)插入

我们接下来就要设计插入的函数了,将原先已经存放好的顺序表进行插入:

	void sequentialListInsert(SequentialListPtr paraListPtr,int paraPosition,int paraValue)//对顺序表的长度进行判断,如果不能则无法插入 
	{
		//step 1.对存储空间进行检查 
		if(paraListPtr->actualLength>=LIST_MAX_LENGTH)
		{
			printf("Cannot insert element: list full.\r\n");
			return;
		}//of if
		
		//step 2.对存储位置进行检查 
		if(paraPosition<0)
		{
			printf("cannot insert element: nagative position unsupported.");
		}
		if(paraPosition>paraListPtr->actualLength)
		{
			printf("Cannot insert element: the position %d is bigger than the list length %d.\r\n",paraPosition, paraListPtr->actualLength);
			return;
		}//of if
		
		//step 3.移动剩余的部分 
		for(int i=paraListPtr->actualLength;i>paraPosition;i--)
		{
			paraListPtr->data[i] = paraListPtr->data[i-1];
		}//of for i
		
		//step 4.开始插入 
		paraListPtr->data[paraPosition]= paraValue;
		
		//更新顺序表的长度 
		paraListPtr->actualLength ++;
		
		
		 }//of sequentialListInsert

插入之后我们还要设计一个测试插入的函数来验证:

void sequentialInsertTest()
		  {
		  	int i;
		  	int tempArr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值