数据结构之顺序表3(顺序表的创建、插入、删除········)

顺序表的创建、插入、删除、定位等操作:

/*
********************
filename:  sqlist_test.c
datatime:  XXXX
author:   *****
*******************
*/


#include
#include
#define INITSIZE 100
typedef int ElemType;
typedef struct node
	{
	ElemType *data; //存储空间的基地址
	int length;  //顺序表的长度(即已经存入了的元素个数)
	int listsize; //当前存储空间的容量
	}sqlist;


void initlist(sqlist *L)  //创建一个空顺序表
	{
	L->data=(ElemType *)malloc(sizeof(ElemType)*INITSIZE);
	//存储空间的初始量
	L->length=0;
	L->listsize=INITSIZE;
	}


int getlen(sqlist *L)   //求顺序表的表长
	{
	return L->length;  
	}


void list(sqlist *L)   //输出顺序表的全部元素
	{
	  int i;
	  for(i=0;ilength;i++)
		  {
		    printf("%4d",L->data[i]);
		  }
	  printf("\n");
	}



int locate(sqlist *L,ElemType x)//元素定位操作
	{
	  int i=0;
	  if(i<0||i>L->length)
		  return 0;//i的取值范围不正确
	  while(ilength)
		  {
		   if(L->data[i] == x)
			   return i+1;  //返回位序i+1
		   else i++;
		  }
	}


int delete(sqlist *L,int i, ElemType *e)  //删除元素
	{
	int j;
	if(i<1||i>L->length)
		return 0;
	while(ilength)
		*e=L->data[i-1];
	for(j=i;jlength ;j++)
		{
		  L->data [j-1]=L->data [j];
		  L->length--; 
		  return 1;
		}
	}

int insert(sqlist *L,int i,ElemType x) //插入元素
	{
	  int j=0;
	  if(i<1||i>L->length)
		  return 0;
	  if(L->length == L->listsize)
		  {
		  L->data=(ElemType *)realloc(L->data),
			  (L->listsize+1)*sizeof(ElemType);
		  L->listsize++;
		  }

	  for(j=L->length-1;j>=i;j--)
		  {
		  L->data[j+1]=L->data[j+];
		  L->data[i-1]=x;
		  L->length++;
		  return 1;
		  }
	}
int main()
	{
	sqlist *List;
	int i,a,b,c,x,y;
	List = (sqlist *)malloc(sizeof(sqlist));
	initlist(List);
	printf("请输入顺序表的表长:\n");
	scanf("%d",&List->length);
	printf("请输入顺序表的数据元素:\n");
	for(i=0;ilength;i++)
		{
		  scanf("%d",&List->data[i]);
		}
	
   printf("顺序表的长度为:\n");
   printf("%d\n",getlen(List));

   printf("顺序表的数据元素为:\n");
   list(List);

   printf("请输入定位的数据元素值:\n");
   scanf("%d",&a);
   printf("%d\n",locate(List,a));

   printf("请输入要插入的元素的节点和值:\n");
   scanf("%d%d",&b,&c);
   insert(List,b,c);
   list(List);

   printf("请输入要删除的节点:\n");
   scanf("%d",&x);
   delete(List,x,y);
   list(List);
   
   

   system("pause");
   return 0;
	} 

博主最新开了一个网店 [ 点击查看->华少潮牌男装店 ],款式多样,价格实惠,质量保证。欢迎各位读者进店查看。购买时请说明是CSDN读者,优惠更大。期待你的光临!!!

你可能感兴趣的:(编程语言)