一、顺序表按元素删除
/定义结构体部分
typedef struct
{
datatype data[MAXSIZE];//数据元素
int len;//顺序表长度
}Seqlist,*seqlist;
/按下标进行删除
int delete_sub(seqlist list,int sub)
{
if(list==NULL||sub<0||empty_seqlist(list)||sub>=list->len)
{
printf("删除失败\n");
return -1;
}
for(int i=sub;i<list->len;i++)
{
list->data[i-1]=list->data[i];
}
list->len--;
return 0;
}
/按元素删除
int delete_element(seqlist list,datatype e)
{
int ret=searh_element(list,e);
if(ret==-1)
{
printf("删除失败\n");
return -1;
}
delete_sub(list,ret);
}
二、顺序表按元素插入其后继位置
/定义结构体部分
typedef struct
{
datatype data[MAXSIZE];//数据元素
int len;//顺序表长度
}Seqlist,*seqlist;
/按下标进行插入
int insert_sub(seqlist list,int sub,datatype e)
{
if(list==NULL||full_seqlist(list)||sub>list->len||sub<0)
{
printf("插入失败\n");
return -1;
}
for(int i=list->len-1;i>=sub;i--)
{
list->data[i+1]=list->data[i];
}
list->data[sub]=e;
list->len++;
return 0;
}
/按元素进行插入
int insert_element(seqlist list,datatype e,datatype f)
{
int ret=searh_element(list,e);
if(ret==-1)
{
printf("插入失败\n");
return -1;
}
insert_sub(list,ret+1,f);
return 0;
}
三、顺序表排序
/定义结构体部分
typedef struct
{
datatype data[MAXSIZE];//数据元素
int len;//顺序表长度
}Seqlist,*seqlist;
/排序部分
int sort_bubble(seqlist list)
{
datatype temp;
for(int i=1;i<list->len;i++)
{
int count=0;
for(int j=0;j<list->len-i;j++)
{
if(list->data[j]>list->data[j+1])
{
temp=list->data[j];
list->data[j]=list->data[j+1];
list->data[j+1]=temp;
count++;
}
}
if(count==0)
break;
}
}
四、顺序表合并
/主函数部分
#include "fun.h"
2 int main(int argc, const char *argv[])
3 {
4 seqlist list=get_space();
5 seqlist list1=get_space();
6 seqlist list2=get_space();
7 int n;
8 int sub;
9 datatype e;
10 datatype f;
11 printf("请输入要插入给第一个顺序表的元素个数--");
12 scanf("%d",&n);
13 for(int i=0;i<n;i++)
14 {
15 printf("请输入插入的第一个顺序表的数据元素:");
16 scanf("%d",&e);
17 insert_rear(list,e);
18 }
19 output_seqlist(list);
20 printf("请输入要插入给第二个顺序表的元素个数--");
21 scanf("%d",&n);
22 for(int i=0;i<n;i++)
23 {
24 printf("请输入插入的第二个顺序表的数据元素:");
25 scanf("%d",&e);
26 insert_rear(list1,e);
27 }
28 output_seqlist(list1);
29 sort_bubble(list); //排序
30 sort_bubble(list1); //排序
31 combine_seqlist(list,list1,list2);
32 output_seqlist(list2);
33 list=free_space(list);
34 return 0;
35 }
/功能函数部分
void combine_seqlist(seqlist la,seqlist lb,seqlist lc)//结合部分
{
int p=0,q=0,r=0;
while(p<la->len&&q<lb->len)
{
if(la->data[p]<lb->data[q])
{
lc->data[r]=la->data[p];
p++;
r++;
lc->len++;
}
else
{
lc->data[r]=lb->data[q];
r++;
q++;
lc->len++;
}
}
while(p<la->len)
{
lc->data[r]=la->data[p];
p++;
r++;
lc->len++;
}
while(q<lb->len)
{
lc->data[r]=lb->data[q];
r++;
q++;
lc->len++;
}
}
int insert_rear(seqlist list,datatype e)/顺序表尾巴插入
{
if(list==NULL||full_seqlist(list))
{
printf("插入失败\n");
return -1;
}
list->data[list->len]=e;
list->len++;
return 0;
}
int output_seqlist(seqlist list)/输出部分
{
if(list==NULL||empty_seqlist(list))
{
printf("输出失败\n");
return -1;
}
for(int i=0;i<list->len;i++)
{
printf("data[%d]=%d\t",i,list->data[i]);
}
putchar(10);
return 0;
}
int sort_bubble(seqlist list)/排序部分
{
datatype temp;
for(int i=1;i<list->len;i++)
{
int count=0;
for(int j=0;j<list->len-i;j++)
{
if(list->data[j]>list->data[j+1])
{
temp=list->data[j];
list->data[j]=list->data[j+1];
list->data[j+1]=temp;
count++;
}
}
if(count==0)
break;
}
}