Linux下的-线性表-c代码实现

/*main.c文件*/

#include "sqelist.h"             //线性表头文件

int  main(void)
{
int i=0,ret=0,pos,va,l=0;
sqelist *mm = creat_sqelist();    //申请一个空闲行表 
if(mm == NULL)    //失败的情况
{
printf("申请失败\n");
return -1;
}
printf("输入你要传入元素的个数: ");
scanf("%d",&pos);
printf("输入你要传入的元素: ");
for(i=0;i<pos;i++)//传入10个数据
{
scanf("%d",&va);
ret=add_sqelist(mm,va);
if(ret==-2)
{
printf("越界");
break;
}
if(ret==-1)
{
printf("失败");
return -1;
}
}
printf("\n");
while(1)
{
for(i=0;i<mm->count;i++)//打印这写数据
{
printf("%d",mm->data[i]);
printf("  ");
}
printf("\n");

printf("请选择操作 1:插入 2:删除 3:改变 4:查找\n");


scanf("%d",&l);
if(l==1)
{
printf("\n请输入要插入元素的位置和大小\n");
scanf("%d %d",&pos,&va);
ret=inset_sqelist(mm,pos,va);
if(ret==-2)
{
printf("超出范围");
continue;
}
if(ret==-1)
{
printf("失败");
return -1;
}
for(i=0;i<mm->count;i++)//打印这写数据
{
printf("%d",mm->data[i]);
printf("  ");
}


}
if(l==2)
{
printf("\n请输入要删除元素的位置\n");
scanf("%d",&pos);
ret=delet_sqelist(mm,pos);
if(ret==-2)
{
printf("没有的元素");
continue;
}
if(ret==-1)
{
printf("失败");
return -1;
}
for(i=0;i<mm->count;i++)//打印这写数据
{
printf("%d",mm->data[i]);
printf("  ");
}


}


if(l==3)
{
printf("请输入要改正元素的位置\n");
scanf("%d",&pos);
printf("请输入要改正元素的值\n");
scanf("%d",&va);
ret=gai_sqelist(mm,pos,va);


if(ret==-2)
{
printf("超出范围");
continue;
}
if(ret==-1)
{
printf("失败");
return -1;
}
for(i=0;i<mm->count;i++)//打印这写数据
{
printf("%d",mm->data[i]);
printf("  ");
}


}
if(l==4)
{
printf("请输入要查询元素的位置\n");
scanf("%d",&pos);
ret=cha_sqelist(mm,pos);
printf("\n");
if(ret==-2)
{
printf("超出范围");
continue;
}
if(ret==-1)
{
printf("失败");
return -1;
}
}

printf("\n 按任意键继续!");
getchar();
getchar();
system("clear");
if((l>4)&(l<1))
printf("错误,请重新输入!\n");


}
return 0;

}

 

 

 

/*sqelist.c文件*/

#include "sqelist.h"
sqelist *creat_sqelist()//创建线性表
{
sqelist *sq = (sqelist *)malloc(sizeof(sqelist));
if(sq == NULL)
{
printf("malloc");
return NULL;
}
bzero(sq,sizeof(sqelist));//清空申请道德数组空间
return sq;
}


int add_sqelist(sqelist *sq,datatype va)//初始化线性表
{
if(sq == NULL)return -1;
if(sq->count>=N)return-2;
sq->data[sq->count]=va;
sq->count++;
return 0;
}


int inset_sqelist(sqelist *sq,int pos,datatype va)//插入元素
{
int i=0; 
if(pos>sq->count)return-2;
if(sq == NULL)return -1;
for(i=sq->count;i>pos;i--)
{
sq->data[i]=sq->data[i-1];
}
sq->data[pos]=va;
sq->count++;
return 0;
}


int delet_sqelist(sqelist *sq,int pos)//删除元素
{
int i=0; 
if(pos>=sq->count)return-2;
if(sq == NULL)return -1;
for(i=pos;i<sq->count-1;i++)
{
sq->data[i]=sq->data[i+1];
}
sq->count--;
return 0;
}


int gai_sqelist(sqelist *sq,int pos,datatype va)//改正元素
{
if(pos>=sq->count)return-2;
if(sq == NULL)return -1;
sq->data[pos]=va;
return 0;
}
int cha_sqelist(sqelist *sq,int pos)//查寻数据
{
if(pos>=sq->count)return-2;
if(sq == NULL)return -1;
printf("%d",sq->data[pos]);
return 0;

}

 

 

 

/*sqelist.h文件*/

#ifndef _sqelist_H

#define _sqelist_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 32


typedef int datatype;//数据的类型为 int
typedef struct 
{
datatype data[N];//int类型的数组
int count ;//计数器
}sqelist;


sqelist *create_sqelist();//创建线性表
int add_sqelist(sqelist *sq,datatype va);//写入数据
int inset_sqelist(sqelist *sq,int pos,datatype va);//插入数据


int delet_sqelist(sqelist *sq,int pos);//删除元素
int gai_sqelist(sqelist *sq,int pos,datatype va);//改正数据
int cha_sqelist(sqelist *sq,int pos);//查寻数据
#endif





 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值