顺序列表操作接口函数声明
void sequence_list_init(sequence_list_t *sl);
void append(sequence_list_t *sl,int dat);
void display(sequence_list_t *sl);
int size_list(sequence_list_t *sl);
int find_list(sequence_list_t *sl,int find_dat);
int get(sequence_list_t *sl,int index);
int insert(sequence_list_t *sl,int pos,int dat);
int delet(sequence_list_t *sl,int pos);
顺序列表数据结构个体定义
#define MAX_SIZE 100
typedef struct sequence_list
{
int data[MAX_SIZE];
int size;
}sequence_list_t;
完整代码
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct sequence_list
{
int data[MAX_SIZE];
int size;
}sequence_list_t;
void sequence_list_init(sequence_list_t *sl)
{
sl->size = 0;
memset(sl->data,0,MAX_SIZE);
}
void append(sequence_list_t *sl,int dat)
{
if(sl->size < MAX_SIZE)
{
sl->data[sl->size] = dat;
sl->size++;
}
else
{
printf("list is full append fail\n");
}
}
void display(sequence_list_t *sl)
{
int i = 0;
for(i = 0; i < sl->size;i++)
{
printf("%d:[%d]\n",i,sl->data[i]);
}
}
int size_list(sequence_list_t *sl)
{
return sl->size;
}
int find_list(sequence_list_t *sl,int find_dat)
{
int i = 0;
for(i = 0;i < sl->size;i++)
{
if(find_dat == sl->data[i])
return i;
}
if(i > sl->size)
{
return -1;
}
}
int get(sequence_list_t *sl,int index)
{
return sl->data[index];
}
int insert(sequence_list_t *sl,int pos,int dat)
{
int i = 0;
if(pos > MAX_SIZE)
{
return -1;
}
if(pos == sl->size)
{
sl->data[pos] = dat;
sl->size++;
return 1;
}
for(i = sl->size;i >= pos;i--)
{
sl->data[i+1] = sl->data[i];
}
sl->data[pos] = dat;
sl->size++;
return 1;
}
int delet(sequence_list_t *sl,int pos)
{
int i = 0;
if(pos > sl->size)
{
return -1;
}
else
{
for(i = (pos + 1);i <= sl->size;i++)
{
sl->data[i-1] = sl->data[i];
}
sl->size--;
}
}
int main()
{
sequence_list_t sq_list;
sequence_list_init(&sq_list);
append(&sq_list,1);
append(&sq_list,2);
append(&sq_list,3);
append(&sq_list,5);
append(&sq_list,7);
append(&sq_list,9);
display(&sq_list);
printf("list curent size : %d\n",size_list(&sq_list));
printf("find_list(),9 index : %d\n",find_list(&sq_list,9));
printf("get() tail item %d\n",get(&sq_list,sq_list.size-1));
insert(&sq_list,3,33);
printf("aftert inser 3,33\n");
display(&sq_list);
delet(&sq_list,3);
printf("after delet 3\n");
display(&sq_list);
printf("list curent size : %d\n",size_list(&sq_list));
return 0;
}
运行测试结果