数据结构之顺序线性表

本文深入探讨了顺序线性表的数据结构,包括创建、数据插入、删除和查找等核心流程。通过C语言实现,详细解释了每一步操作的具体实现方式,为读者提供了清晰的理解路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顺序线性表是按顺序在一段地址连续的单元中存储数据的的一种数据存储结构;



/********************************************************
				顺序线性表历程
	
	包含流程是创建线性表,线性表数据插入,删除,查找。
				
*********************************************************/
#include<stdio.h>
#include<stdlib.h>


#define  MAX_NUM  20
#define   OK        0
#define   ERROR     1



/*定义线性表数据结构*/

typedef struct 
{
	int date[MAX_NUM]; //数据总数
	int length;   //线性列表实际长度
	
}qList;


/*创建顺序线性表*/
	int ListCreat(qList *Node,int n)
	{
		int k;
		for(k=0;k<n;k++)
		{
			Node->date[k]=k+1;
			Node->length++;
			printf("Node->date[%d+1]=%d\n",k,Node->date[k]);
		}
		printf("%s done\n",__FUNCTION__);
		return OK;
	}
	
/*顺序线性表数据查找*/
 int ListSreach(qList *Node,int n,int*tmpDate)
 {
	 if(Node->length==0||n<1||n>Node->length)
	 {
		 return ERROR;
	 }
	 
	 *tmpDate=Node->date[n-1];
	 printf("serch node value is %d\n",Node->date[n-1]);
	 printf("%s done\n",__FUNCTION__);
	 return OK;
	 
 }
	

/*顺序线性表数据插入*/
    int ListInster(qList *Node,int n,int*tmpDate)
	 {
		 int k;
		if(Node->length==MAX_NUM) 
		{
		   return ERROR;
		}
		if(n<1||n>Node->length+1)
		{
			return ERROR;
		}
		
		if(n<Node->length)
		{
			
			for (k=Node->length;k>n;k--)
			{
				Node->date[k+1]=Node->date[k];
			}
			
		}
		
		Node->date[n-1]=*tmpDate;
		Node->length++;
		printf("%s done\n",__FUNCTION__);
		return OK;
		
	 }

/*顺序线性表数据删除*/
  int ListDelete(qList*Node,int n ,int *tmpDate)
   {
	   if(Node->length==0)
	   {
		   return ERROR;
	   }
   if(n<1||n>Node->length)
   {
	   return ERROR;
   }
   
    * tmpDate=Node->date[n-1];
	
   if(n<Node->length)
   {
    for(n;n<Node->length;n++)
	
	 Node->date[n-1]=Node->date[n];  

   }
	  Node->length--;
	printf("%s done\n",__FUNCTION__);
	return OK;
   }
   
   

    void result_show(int result,qList*Node)
	{
		int n;
		if(result==OK)
		{
		  for(n=0;n<Node->length;n++)
			  printf("Node->date[%d]=%d\n",n,Node->date[n]);
		}
		
		else
		{
			printf("ERRROR\n");
			exit(1);
		}
		
	}
   
   
int main(int argc,char*argv[])
{
	qList listNode[MAX_NUM];
	int *tmpDate;
	
	int result;
	result=ListCreat(listNode,10);
	result_show(result,listNode);
	
	result=ListSreach(listNode,5,tmpDate);
	result_show(result,listNode);
	
	result=ListInster(listNode,6,tmpDate);
	result_show(result,listNode);
	
	result=ListDelete(listNode,7 ,tmpDate);
	result_show(result,listNode);
	
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值