顺序表常见几种操作:
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#define ture 100
#define false 101
#define maxsize 20
typedef struct node
{
int data[maxsize];
int length;
}seqlist, *pseqlist;
pseqlist init_list() //初始化顺序表,函数返回类型为pseqlist类型。
{
pseqlist p;
p = (pseqlist)malloc(sizeof(seqlist));
if(p)
p->length = 0;
return p;
}
int length_list(pseqlist p) //求顺序表的长度
{
return (p->length);
}
/*
顺序表的检索有两种方法, 1:通过给定的一个数,然后在顺序表里遍历去匹配,如果有,输出位置,没有,返回false
2:通过给定的位置,来返回对应位置的数值
*/
int location_list(pseqlist p, int x) // 参数:顺序表,要比对的数
{
int i;
for(i = 0; i < p->length; i++)
{
if(p->data[i] == x)
{
return i+1;
}
}
return false;
}
/*
顺序表,要插入元素的位置,以及要插入得元素
*/
int insert_list(pseqlist p, int i, int number)
{
int j;
if(p == NULL)
{
printf("表不存在\n");
return false;
}
if(i < 1 || i > maxsize)
{
printf("插入的位置不合法\n");
return false;
}
if(p->length >= maxsize)
{
printf("表溢出\n");
return false;
}
for(j = p->length; j >= i; j--)
{
p->data[p->length] = p->data[p->length-1];
}
p->data[i-1] = number;
p->length++;
return ture;
}
int delete_list(pseqlist p, int i) //删除顺序表的某个元素
{
int j;
if(p == NULL)
{
printf("表不存在\n");
return false;
}
if(i < 1 || i > maxsize)
{
printf("删除的位置不合法\n");
return false;
}
for(j = i; j < p->length; j++ )
{
p->data[j-1] = p->data[j];
}
p->length--;
return ture;
}
int clear_list(pseqlist p) //清空顺序表
{
p->length = 0;
return ture;
}
int destory_list(pseqlist p) //销毁顺序表
{
if(p)
{
free(p);
}
if(p == NULL)
{
return ture;
}
}
int main()
{
pseqlist l;
l = init_list();
int num;
srand(time(NULL));
int i;
for (i = 0; i < 10; i++)
{
num = rand()%11;
insert_list(l,i+1,num);
}
// printf("%d, ", rand()%11);
for(i = 0; i < 10; i++)
{
printf("%d ",l->data[i]);
}
int len;
len = length_list(l);
printf("\n顺序表长度为%d",len);
return 0;
}
来源:https://blog.csdn.net/qq_40892327/article/details/102778732