该代码段包含了几种比较常见的顺序表的基本操作,有:求表长,按位取值,按值取位,插入和删除几种方式;
#include <stdio.h>
#define listsize 100
typedef struct s//这里可有可没有结构体变量名;
{
int data[listsize];
int length;
}seplist;//typedef把结构体整体的类型赋予给了seplist,相当于重命名;
void initlist(seplist *L)//输入的为被定义的seplist类型,所以这里也应该是seplist来定义;
{
L->length=0;//给线性表(一个结构体里面包含了数组和int型长度); 线性表的第一步就是初始化设置length为0;
}
int lengthlist(seplist *L)
{
return L->length;//返回长度;
}
void createlist(seplist *L,int n) //为线性表赋值;
{
int i;
printf("请输入线性表:\n");
for(i=0;i<n;i++)
{
scanf("%d",&L->data[i]);
L->length++;//这个一定不能忘,每次修改线性表中数据个数,都要修改length;
}
}
int getlist(seplist *L,int i)
{
if (i>=L->length||i<0)
{
printf ("元素不在范围之内\n");
return 0 ;
}
else
return L->data[i-1];
}
int localist(seplist *L,int a)
{
int i=0;
while(i<L->length&&a!=L->data[i])
i++;
if(i>=L->length)
printf("元素查找不到\n ");
else
printf("查找的元素位置为:%d\n",i+1);
return 0;
}
insertlist(seplist *L,int b,int c)
{
int i;
if(L->length>=listsize)
{
printf("表满\n");
return 0;
}
if(c>L->length+1||c<1)
{
printf("插入位置出错\n");
return 0;
}
for(i=L->length-1;i>=c-1;i--)
L->data[i+1]=L->data[i];
L->data[i]=c;
L->length++;
return 1;
}
deletelist(seplist *L,int d)
{
int i;
if(L->length==0)
{
printf("空表不能删除\n");
return 0;
}
if(d>L->length||d<1)
{
printf("删除位置错误\n");
return 0;
}
for(i=d;i<L->length;i++)
L->data[i]=L->data[i+1];
L->length--;
return 1;
}
int main()//从主函数进去;
{
int i,n,a,b,c,d;
seplist L;//seplist是上面结构体的一个可以等量替换的名字,用来定义L;被定义的结构体L就是顺序表; 此处L不是指针,下面表达地址需要&号;
initlist(&L);//指针函数需要&符号才能进行指向;如果是数组就只要输入数组名即可;输入这个结构体L;
printf("线性表长度为:%d\n",lengthlist(&L));//输出函数返回的长度;
printf("请输入将要创建的顺序表的元素个数:");
scanf("%d",&n);
createlist(&L,n);
printf("请输入要取值的位置:");
scanf("%d",&i);
printf("取值i为%d\n",getlist(&L,i));
printf("请输入要查找的值:");
scanf("%d",&a);
localist(&L,a);
printf("请输入要插入的值和位置;");
scanf("%d%d",&b,&c);
printf("%d",insertlist(&L,b,c));
printf("\n请输入删除的位置:") ;
scanf("%d",&d);
printf("%d",deletelist(&L,d));
}
各位兄弟,如果这篇文章对你有那么一点点的帮助的话,就给我一点鼓励点个赞吧,兄弟我在这里谢谢大家啦!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)