数据结构--线性表1(学习笔记)

顺序表

线性表的顺序存储结构。特点是逻辑上相邻的数据元素,其物理存储次序也相同。

结构组成

typedef struct{
     ElemType data[maxsize]  // 所存放的最大数据个数
     int length;             // 所存放元素的个数
 } Serlist;

基础操作

1,线性表的初始化操作
SeqList * Init()
{
	SeqList * p;
	p=(SeqList *)malloc(sizeof(SeqList));
	if(p==NULL)
	{
		printf("内存分配失败!\n");
		exit(0); 
	}
	else
	{
		p->len=0;
		return p;
	}
}

2,线性表元素的添加
int   add(SeqList * L1, Elemtype x)
{
  if(L1->len==M)
  {
  	printf("表已满无法插入\n");
  	return -1;
  }	
  else
  {
  	L1->data[L1->len]=x;
	L1->len++;
	return 1;
  }
	
}
3,线性表的插入
int Insert(SeqList * L1, Elemtype x,int i)
{
	int j;
	if(i<1||i>L1->len+1||L1->len==M)
	{
		printf("无法插入,参数不对\n");
		return -1;
	}
	else
	{
	for(j=L1->len-1;j>=i-1;j--)
	     L1->data[j+1]=L1->data[j];
	L1->data[i-1]=x;
	L1->len++;
	return 1;
	}	
}
4,线性表元素的删除
int  del(SeqList * L1,int i)
 {
 	
 	int j;
 	if(i<1||i>L1->len)
 	{
 		printf("无法删除,参数不对\n");
		return -1;
 	}
 	else
	 {
	 	for(j=i;j<=L1->len;j++)
 	       L1->data[j-1]=L1->data[j];
        L1->len--;
        return 1;
	 } 
 	
 }
5,线性表元素的查找
 int find(SeqList * L1, Elemtype x)
 {
 	
 	int i;
 	for(i=0;i<=L1->len-1;i++)
 	{
 		if(L1->data[i]==x)
 		{
 			
 			return i+1;
 			break;
 		}
 	}
 	if(i>=L1->len)
 	  return -1;
}
6,线性表元素的输出
 void out(SeqList * L1)
 {
 	int i;
 	for(i=0;i<=L1->len-1;i++)
 	   printf("%5d",L1->data[i]);
 	printf("\n");
 }

你可能感兴趣的:(数据结构,学习,笔记,算法)