线性表顺序存储结构代码记录

线性表顺序存储结构代码记录

//顺序表
#include<stdio.h>
//#include<time.h>
#define maxsize 100
typedef int Elemtype;

//定义结构体顺序表 
typedef struct{
	Elemtype date[maxsize];
	int length;
}Seqlist;


//操作函数_取数据 (按位置取) 
Elemtype GetSeqlist(Seqlist * L,int n) 
{
	if(L->length)//判断表不为空
		if(n<=L->length&&n>0)//判断操作位置是否合法 
			return L->date[n-1];  
	else return -1;		
} 


//操作函数_删除数据(按位置删除) 
int ElemDelete(Seqlist * L,int n)
{
	int i;
	if(L->length)//判断表不为空
		if(n<=L->length&&n>0)//判断操作位置是否合法 
		{  
			for(i=n-1;i<L->length;i++)
				L->date[i]=L->date[i+1];
	 			L->length--;
				 return 1;
	 	}
	else  return 0;			
 } 
 
 
//操作函数_插入数据(按位置插入) 
int ElemInsert(Seqlist * L,int n,Elemtype m)
{
	int i;
	if(!L->length)//表为空则跳出
	return 0; 
	if(n<=L->length+1&&n>0)//判断操作位置是否合法 
	{
		if(n<=L->length&&n>0)//在中间插入
			{
				for(i=L->length;i>=n;i--)
					L->date[i]=L->date[i-1];
				L->date[n-1]=m;
				L->length++;
				return 1;
			}
	
		else if(n==L->length+1);//在末尾插入 
			{
				L->date[n-1]=m;
				L->length++;
				return 1;
			}
	}
	else return 0;
}


void main()
{
		Seqlist L;
		int i,m;
		L.length=10;
		
	//产生测试数据 
		for(i=0;i<L.length;i++)
		L.date[i]=i;
//	rand()%(1000);
	
	//输出测试数据 
		for(i=0;i<L.length;i++)
			printf("%d	",L.date[i]);
		printf("\n");
		
	//测试取数据函数 
		m=GetSeqlist(&L,2);	
		printf("%d\n",m);
	
	//测试删除数据函数(第二个位置删除) 
		ElemDelete(&L,2);
		for(i=0;i<L.length;i++)
			printf("%d	",L.date[i]);
		printf("\n");
	
	//测试插入数据 (第二个位置插入77)
		if(ElemInsert(&L,2,77) )
		for(i=0;i<L.length;i++)
			printf("%d	",L.date[i]);
		printf("\n");
		


}
posted @ 2020-04-27 17:45  selfW  阅读(16)  评论(0编辑  收藏  举报