数据结构-顺序表的实现以及一些功能(c语言版本)

2021-12-09 16:11:51 浏览数 (1)

代码语言:javascript复制
#define MAXSIZE 100   	//MAXSIZE为线性表可能的最大长度
#include

typedef int ElemType;
typedef struct
{
    ElemType data[MAXSIZE];
    int length;					// length为线性表的长度
}SqList;						//线性表定义

tydef 为自定义结构体

代码语言:javascript复制
void InitList(SqList *L)			//初始化操作,将线性表L置空
{
    L->length=0;
}

定义SeqList形式的指针变量指向 length,length代表最后一个元素的下标

代码语言:javascript复制
int IsEmpty(SqList *L)  //判断表是否为空,如L是空表,返回1,否则返回0
{
	if(L)
	{
		L->length==0;
		return 1;
	}
	else
		return 0;
}
代码语言:javascript复制
int LocateElem(SqList *L,ElemType x)//定位函数,返回L中第1个与x相等的数据元素的位置(从0算起),否则返回值为0
{
  int i=0;
	for(;i<=L->length;i  )
	if(L->data[i]=x)
	return i;
return -1;
}
代码语言:javascript复制
int GetElem(SqList L,int i) //取表中第i元素
{
	printf("%dn",L.data[i]);
}
代码语言:javascript复制
int Insert(SqList *L,ElemType x,int i)//在线性表L中第i个数据元素之前插入一个数据元素x
{
    int k;
	if(i<0||i>L->length||L->length 1==MAXSIZE)
		return 0;
	else
	{
		for(k=L->length;k>=i;k--)
			L->data[k]=L->data[k-1];
		L->data[i]=x;
		L->length=L->length 1;
	}
	return 1;
}
代码语言:javascript复制
int Delete(SqList *L, int i)		//删除线性表L中第i个数据元素
{
   int k;
   if(i>L->length)
	return 0;
   else
   {
	for(k=i;k<=L->length-1;k  )
		L->data[k]=L->data[k 1];
		L->length--;
   }
   return 1;
}
代码语言:javascript复制
void MergeList(SqList La,SqList Lb,SqList *Lc)//合并有序表La和Lb到表Lc中,使得表Lc依然有序
{
   int i,j,k;
   i=0,j=0,k=0;
   while(i<=La.length&&j<=Lb.length)
	   if(La.data[i]data[k]=La.data[i];
		   k  ;
		   i  ;
	   }
	   else{
		   Lc->data[k]=Lb.data[j];
		   k  ;
		   j  ;
	   }
	   while(i<=La.length){
		   Lc->data[k]=La.data[i];
		   k  ;
		   i  ;
	   }
	   while(j<=Lb.length){
		   Lc->data[k]=Lb.data[j];
		   k  ;
		   j  ;
	  }
	   Lc->length=k-1;
}

大致就这些,如果 有路过的大神, 望指正

0 人点赞