目录
- typedef struct Seq
- {
- int *data;
- int length;
- int size;
- }seq;
- // 顺序表初始化
- seq *seq_init(void)
- {
- seq *p=(seq *)malloc(sizeof(seq));
- p->data=(int *)malloc(sizeof(int)*5);
- p->length=0;
- p->size=5;
-
- return p;
- }
- // 插入一个数据到顺序表指定的位置
- void seq_insert(seq *p,int elem,int add) // 1 2 3 4 length=4 elem=10 add=2
- {
- if(add<1 || add>p->length+1)
- {
- return;
- }
- if(p->length==p->size)
- {
- p->data=(int *)realloc(p->data,sizeof(int)*(p->size+1));
- p->size++;
- }
-
- int i;
- for(i=p->length;i>=add;i--)
- {
- p->data[i]=p->data[i-1];
- }
- p->data[add-1]=elem;
- p->length++;
-
- }
- // 遍历函数
- void display(seq *p)
- {
- int i;
- for(i=0;i<p->length;i++)
- {
- printf("%d >> ",p->data[i]);
- }
- printf("\n");
- }
- //删除某个位置的数据
- int seq_del(seq *p,int add) // 1 2 3 4 add=2
- {
- if(add<1 || add>p->length)
- {
- return -1;
- }
-
- int i;
- for(i=add;i<p->length;i++)
- {
- p->data[i-1]=p->data[i];
- }
- p->length--;
- return 0;
- }
- // 查询某个数据的位置
- int seq_search(seq *p,int elem)
- {
- int i;
- for(i=0;i<p->length;i++)
- {
- if(p->data[i]==elem)
- {
- return i+1;
- }
- }
- return -1;
- }
- // 修改某个数据为新的数据
- void seq_change(seq *p,int elem,int newelem)
- {
- int add=seq_search(p,elem);
- p->data[add-1]=newelem;
-
- }
- // 插入某个数据到顺序表,保持顺序表递增有序
- void seq_test_insert(seq *p,int elem) //2 4 6 8 elem=5
- {
- int i;
- for(i=0;i<p->length;i++)
- {
- if(elem<p->data[i])
- {
- break;
- }
-
- }
-
- seq_insert(p,elem,i+1);
- }
- // 删除某个数据,保持顺序表递增有序
- void seq_test_del(seq *p,int elem) //2 4 5 8 6
- {
- int i;
- for(i=0;i<p->length;i++)
- {
- if(elem==p->data[i])
- {
- break;
- }
-
- }
- seq_del(p,i+1);
- }