"head.h"
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef int datatype;
#define MAXSIZE 20
typedef struct
{
datatype data[MAXSIZE];
int len;
}seqlist;
seqlist *create_seqlist();
int input_seqlist();
int out_seqlist();
int xiugai_data();
int delete_data();
int insert_data();
int bubble_seqlist();
int simple_seqlist();
void combine();
seqlist *free_seqlist();
#endif
"test.c"
#include "head.h"
seqlist *create_seqlist()
{
seqlist *list=(seqlist *)malloc(sizeof(seqlist));
if(list==NULL)
return NULL;
list->len=0;
return list;
}
int full_seqlist(seqlist *list)
{
return list->len==MAXSIZE?-1:0;
}
int empty_seqlist(seqlist *list)
{
return list->len==0?-1:0;
}
int input_seqlist(seqlist *list,datatype e)
{
if(NULL==list || full_seqlist(list))
return -1;
list->data[list->len]=e;
list->len++;
return 0;
}
int out_seqlist(seqlist *list)
{
if(NULL==list || empty_seqlist(list))
return -1;
for(int i=0;i<list->len;i++)
{
printf("%d\t",list->data[i]);
}
puts("");
return 0;
}
int search_data_empty(seqlist *list,datatype key)
{
if(NULL==list || empty_seqlist(list))
{
printf("请检查程序!");
return -1;
}
for(int i=0;i<list->len;i++)
{
if(key == list->data[i])
return i;
}
}
int search_data_full(seqlist *list,datatype key)
{
if(NULL==list || full_seqlist(list))
{
printf("请检查程序!");
return -1;
}
for(int i=0;i<list->len;i++)
{
if(key == list->data[i])
return i;
}
}
void xiugai_xiabiao(seqlist *list,int i,datatype e)
{
list->data[i]=e;
}
int xiugai_data(seqlist *list,datatype key,datatype e)
{
int i=search_data_empty(list,key);
xiugai_xiabiao(list,i,e);
return 0;
}
int delete_data(seqlist *list,datatype key)
{
int m=search_data_empty(list,key);
for(int i=m;i<list->len;i++)
{
list->data[i]=list->data[i+1];
}
list->len--;
return 0;
}
int insert_data(seqlist *list,datatype key,datatype e)
{
int m=search_data_full(list,key);
for(int i=list->len-1;i>=m;i--)
{
list->data[i+1]=list->data[i];
}
list->data[m]=e;
list->len++;
}
int bubble_seqlist(seqlist *list)
{
if(NULL==list || empty_seqlist(list))
{
printf("请检查程序!");
return -1;
}
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;
}
return 0;
}
int simple_seqlist(seqlist *list)
{
if(NULL==list || empty_seqlist(list))
{
printf("请检查程序!");
return -1;
}
int Min=0;
datatype temp;
for(int i=0;i<list->len-1;i++)
{
Min=i;
for(int j=i+1;j<list->len;j++)
{
if(list->data[j]<list->data[i])
Min=j;
}
if(Min!=i)
{
temp=list->data[i];
list->data[i]=list->data[Min];
list->data[Min]=temp;
}
}
return 0;
}
void combine(seqlist *la,seqlist *lb,seqlist *lc)
{
int p=0,q=0;
while(p<la->len && q<lb->len)
{
if(la->data[p]<lb->data[q])
{
lc->data[lc->len]=la->data[p];
p++;
lc->len++;
}
else
{
lc->data[lc->len]=lb->data[q];
q++;
lc->len++;
}
}
while(p<la->len)
{
lc->data[lc->len++]=la->data[p++];
}
while(q<lb->len)
{
lc->data[lc->len++]=lb->data[q++];
}
}
seqlist *free_seqlist(seqlist *list)
{
if(list==NULL)
return ;
free(list);
list=NULL;
return list;
}
1.c
#include "head.h"
int main(int argc, const char *argv[])
{
int n;
datatype e;
printf("请输入你要输入的元素个数:");
scanf("%d",&n);
seqlist *list=create_seqlist();
for(int i=0;i<n;i++)
{
printf("请输入元素数值:");
scanf("%d",&e);
input_seqlist(list,e);
}
out_seqlist(list);
//顺序表按元素修改
datatype key;
printf("请输入你要修改的值:");
scanf("%d",&key);
printf("请输入修改后的值:");
scanf("%d",&e);
xiugai_data(list,key,e);
out_seqlist(list);
//顺序表按元素删除
printf("请输入你想要删除的元素:");
scanf("%d",&key);
delete_data(list,key);
out_seqlist(list);
//顺序表按元素插入
printf("请输入你想要在哪个元素处插入:");
scanf("%d",&key);
printf("请输入你想要插入的元素值:");
scanf("%d",&e);
insert_data(list,key,e);
out_seqlist(list);
//释放
free(list);
list=NULL;
//顺序表排序
//冒泡降序--
bubble_seqlist(list);
printf("请输入你要输入的元素个数:");
scanf("%d",&n);
list=create_seqlist();
for(int i=0;i<n;i++)
{
printf("请输入元素数值:");
scanf("%d",&e);
input_seqlist(list,e);
}
out_seqlist(list);
bubble_seqlist(list);
out_seqlist(list);
//简单选择升序
simple_seqlist(list);
out_seqlist(list);
//顺序表合并
seqlist la={11,22,23,45,66};
la.len=5;
seqlist lb={12,24,25,44,77};
lb.len=5;
seqlist lc;
lc.len=0;
combine(&la,&lb,&lc);
out_seqlist(&lc);
//顺序表释放空间
list=free_seqlist(list);
return 0;
}
运行效果