一个简单的c语言数据结构系统



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define  N   100
#define  Sqlist    struct lists
struct  lists{
    int date[N];
	int length;
};
  
//创建的表
Sqlist*  sqlist_list()
{
   //申请一段空间
   Sqlist   *l;
   l=(Sqlist *)malloc(sizeof(Sqlist));
   l->length=-1;
   return l;
}

//插入数据
int  sqlist_date(Sqlist *L,int m)
{
	if(sqlist_jde(L)==1)
	{
        printf("data is  full\n");
	}
    L->length++;
    L->date[L->length]=m;
    return 0;

}

//判断是否越界
int sqlist_jde(Sqlist *L)
{
    if(L->length>=N-1)
	{
        return 1;
	}
   else
	{
       return 0;
	}

}
//遍历
int sqlist_show(Sqlist *L)
{
    int  i;
	for(i=0;i<=L->length;i++)
	{
        printf("%d ",L->date[i]);

	}
    printf("\n");

}

//在某个插入数据
int sqlist_inter_pos(Sqlist *L ,int n,int value)
{  
	   int  j;
	   if(sqlist_jde(L)==1)
	   {
           printf("data  is full\n");
		   return -1;
		}
	    if((n<1)||(n>L->length+1))  
		{
            printf("err\n");
			return -1;
  
		}
		for(j=L->length;j>=n;j--)
		{
             L->date[j+1]=L->date[j];
		}
		L->date[n]=value;
		L->length++;
		return 0;
}

//判断链表是否为空
int  sqlist_empty(Sqlist *L)
{
     if(L->length<0)
	 {
        return 1;
	 }
	 else
	 {
        return 0;
	 }
}

// 尾删除
int  sqlist_inter_tail(Sqlist *L)
{
       if(sqlist_empty(L)==1)
	   {
           printf("list  is empty\n");
		   return -1;
	   }
	   int value;
	   value=L->date[L->length];
	   L->length--;//删除最后一个元素
	   return value;
}

//头删除
int sqlist_del_head(Sqlist *L)
{ 
	int i;
    if(sqlist_empty(L)==1)
    {
         printf("list  is empty\n");
		 return -1;
	}
    int value;
	value=L->date[0];
	for(i=0;i<L->length;i++)
	{
        L->date[i]=L->date[i+1];
	}
    L->length--;
	return value;

}

//按位置进行删除
int  sqlist_del_pos(Sqlist *L,int  n)
{
	   int i;
	   int value;
       if(sqlist_empty(L)==1)
	   {
           printf("list  is empty\n");
		    return -1;
	   }
	   if((n<0)||(n>L->length))
	   {
            printf("error\n");

	   }
       value= L->date[n];
	   for(i=n;i<=L->length;i++)
	   {
             L->date[i]=L->date[i+1];
	   }
       L->length--;
	   return value;
}

//按位置进行查找
int  sqlist_find_pos(Sqlist  *L,int n)
{   
     if(sqlist_empty(L)==1)
	 {  
		 printf("list  is empty\n");
		 return -1;
	}
     if((n<0)||(n>L->length))
	 {
         printf("error\n");
		 return -1;
	 }
	 int value;
	 value= L->date[n];
	 return value;
}

//按值查找
int  sqlist_find_value(Sqlist  *L,int value)
{  
	 int flag=0,i;
     if(sqlist_empty(L)==1)
     {
        printf("list is full\n");
		return -1;
	 }
     for(i=0;i<=L->length;i++)
	 {
        if(L->date[i]==value)
	    {
            return i;
			flag=1;
	    }
	}
	 if(flag==0)
	 {
         printf("donot  is  find\n");
		 return -1;
	 }
  return 0;
}
//按位置修改数据
int  sqlist_resive_date(Sqlist *L,int n,int value)
{
	 if(sqlist_empty(L)==1)
	 {
          printf("list is  full\n");
		  return -1;
	 }
     if((n<0)||(n>L->length))
	 {
          printf("error\n");
		  return -1;
	 }
     L->date[n]=value;
	 return 0;

}
//根据的老的值修改为新的数值
int sqlist_resive_oldate(Sqlist *L,int  oldata,int newdata)
{
    int flag=0;
	int i;
	if(sqlist_empty(L)==1)
	{  
		printf("list  is  full\n");
		return -1;
	}
    for(i=0;i<=L->length;i++)
	{
         if(L->date[i]==oldata)
		 {
             L->date[i]=newdata;
			 flag=1;
		 }
    }
	if(flag==0)
	{
       printf("value is nod find\n");
	   return -1;
	}
       return 0;
} 
//数据排序
void   sqlist_sort(Sqlist *L)
{
   int i,j,temp;
   for(i=0;i<=L->length;i++)
   {
      for(j=0;j<=L->length-i-1;j++)
	  {
          if(L->date[j]>L->date[j+1])
		  {
             temp=L->date[j];
			 L->date[j]=L->date[j+1];
			 L->date[j+1]=temp;
		  }
	 }
   }
}

//删除数据中重复的数据
int  sqlist_re_data(Sqlist  *L)
{
	 int i,j=0,k;
     if(sqlist_empty(L)==1)
	 {
        printf("list  is empty\n");
	    return -1;
	 }
     sqlist_sort(L);
	 for(i=0;i<=L->length-1;i++)
	 {
		 for(j=i+1;j<=L->length;)
		 { 
			  if(L->date[i]==L->date[j])
			  {
				  for(k=j;k<=L->length-1;k++)
				  {
                        L->date[k]=L->date[k+1];
				  }
				  L->length--;
			  }
			  else
			  {
                   j++;
                   
			  }
         }
	 }
	 return 0;
}


int main(int argc,char  *argv[])
{
    struct lists * L;
	int i;
	int  s;
	L=sqlist_list();//获得的地址
	
    sqlist_date(L,4);//插入数据
    sqlist_date(L,2);

    sqlist_date(L,6);
    sqlist_date(L,4);
    sqlist_date(L,4);
    sqlist_show(L);

    sqlist_inter_pos(L,2,8);
	sqlist_show(L);
	
	sqlist_inter_tail(L);
    sqlist_show(L);
    
    sqlist_del_head(L);
	sqlist_show(L);
	
	sqlist_del_pos(L,2);
	sqlist_show(L);
    printf("postion=%d\n",sqlist_find_pos(L,4));
	printf("postion=%d\n",sqlist_find_value(L,8));
 
    sqlist_resive_date(L,3,10);
    sqlist_show(L);
	
	sqlist_resive_oldate(L,8,9);
	sqlist_show(L);

    sqlist_sort(L);
    sqlist_show(L);

    sqlist_re_data(L);
	sqlist_show(L);

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值