版权声明:转载请注明出处 https://blog.csdn.net/qq_37689106/article/details/82950950
#include<stdio.h>
#include<stdlib.h>
#define N 32
#include<string.h>
typedef struct seqlist
{
int data[N];
int last;
}seqlist_t;
seqlist_t * seqlist_creat() //初始化一个空的顺序表 ;
{
seqlist_t *sl = (seqlist_t *)malloc(sizeof(seqlist_t));
memset(sl,0,sizeof(seqlist_t));
sl->last = -1; //初始下标为 -1 ;
return sl;
}
void seqlist_insert(seqlist_t *sl,int value) //在顺序表中插入数据
{
sl->last ++;
sl->data[sl->last%N] = value;
}
void seqlist_remove(seqlist_t *sl,int value) //删除表中所指定的数据
{
int i,j,num = -1;
for(i=0;i<=sl->last;i++)
{
if (sl->data[i] == value) // 找到要删除的值
{
num = i;
for(j=num;j<sl->last;j++) //往后全部往前面移动覆盖;
{
sl->data[j] = sl->data[j+1];
}
if (num != -1) //有找到值 总个数就减去1
{
sl->last --;
num = -1;
}
}
}
}
seqlist_t * seqlist_modify(seqlist_t *sl,int oldval,int newval) //修改序列的值
{
int i;
for(i=0;i<sl->last;i++)
{
if (sl->data[i] == oldval)
{
sl->data[i] = newval;
}
}
return sl;
}
int seqlist_serach(seqlist_t *sl,int value) //通过返回值去判断值是否在序列中
{
int i;
int ret;
for(i=0;i<sl->last;i++)
{
if (sl->data[i] == value)
{ ret = 1;
break;
}
else
ret =-1;
}
return ret;
}
void seqlist_show(seqlist_t *sl) //显示全部内容
{
int i;
for(i=0;i<=sl->last;i++)
{
printf("%-3d",sl->data[i]);
}
printf("\n");
}
int main()
{
int i;
int ret;
seqlist_t *SL = seqlist_creat();
for(i=0;i<32;i++)
{
seqlist_insert(SL,i+1);
}
seqlist_show(SL);
seqlist_remove(SL,5);
seqlist_show(SL);
SL = seqlist_modify(SL,2,35);
seqlist_show(SL);
ret = seqlist_serach(SL,35);
if (ret ==1)
{
printf("have\n");
}
else
{
printf("have no\n");
}
return 0;
}