头文件
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 7
typedef int datatype;
typedef struct
{
datatype data[MAXSIZE];
int len;
}seqlist;
int search_data(seqlist *list,datatype key);
int update_data(seqlist *list,datatype key,datatype e);
int delete_sub(seqlist *list,int sub);
int insert_sub(seqlist *list,int sub,datatype e);
int update_sub(seqlist *list,int sub,datatype e);
int search_sub(seqlist *list,int sub);
int empty_seqlist(seqlist *list);
int delete_rear(seqlist *list);
int full_seqlist(seqlist *list);
int insert_rear(seqlist *list,datatype e);
seqlist *create();
void output(seqlist *list);
int delete_date(seqlist *list,datatype key);
void sortlist(seqlist *list);
#endif
自定义文件
#include "head.h"
seqlist *create()
{
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 insert_rear(seqlist *list,datatype e)
{
if(full_seqlist(list))
{
printf("顺序表已满!\n");
return -1;
}
list->data[list->len]=e;
list->len++;
return 0;
}
void output(seqlist *list)
{
puts("");
int i;
for(i=0;i<list->len;i++)
{
printf("%d\t",list->data[i]);
}
puts("");
}
int empty_seqlist(seqlist *list)
{
return list->len==0?-1:0;
}
int delete_rear(seqlist *list)
{
if(empty_seqlist(list))
{
printf("顺序表为空\n");
return -1;
}
list->len--;
return 0;
}
int search_sub(seqlist *list,int sub)
{
if(empty_seqlist(list) || sub<0 || sub>=list->len)
{
printf("顺序表查找失败\n");
return -1;
}
printf("查找的元素是:%d\n",list->data[sub]);
return 0;
}
int update_sub(seqlist *list,int sub,datatype e)
{
if(empty_seqlist(list) || sub<0 || sub>=list->len)
{
printf("修改失败\n");
return -1;
}
list->data[sub]=e;
return 0;
}
int insert_sub(seqlist *list,int sub,datatype e)
{
if(full_seqlist(list) || sub<0 || sub>list->len)
{
printf("插入失败\n");
return -1;
}
int i;
for(i=list->len-1;i>=sub;i--)
{
list->data[i+1]=list->data[i];
}
list->data[sub]=e;
list->len++;
return 0;
}
int delete_sub(seqlist *list,int sub)
{
if(empty_seqlist(list) || sub<0 || sub>=list->len)
{
printf("删除失败\n");
return -1;
}
int i;
for(i=sub+1;i<list->len;i++)
{
list->data[i-1]=list->data[i];
}
list->len--;
}
int search_data(seqlist *list,datatype key)
{
int i;
for(i=0;i<list->len;i++)
{
if(list->data[i]==key)
{
return i;
}
}
return -1;
}
int update_data(seqlist *list,datatype key,datatype e)
{
int sub=search_data(list,key);
if(sub==-1)
{
printf("修改失败\n");
return -1;
}
update_sub(list,sub,e);
return 0;
}
int delete_date(seqlist *list,datatype key)
{
int p=search_data(list,key);
if(p=-1)
{
printf("查找失败");
return -1;
}
delete_sub(list,key);
return 0;
}
void sortlist(seqlist *list)
{
int i,j;
datatype p;
for(i=1; i<list->len; i++)
{
for(j=0; j<list->len-i; j++)
{
if(list->data[j]>list->data[j+1])
{
p = list->data[j];
list->data[j]=list->data[j+1];
list->data[j+1]=p;
}
}
}
}
主函数文件
#include "head.h"
int main(int argc, const char *argv[])
{
seqlist *list=create();
int n;
datatype e;
printf("请输入数据元素的个数:");
scanf("%d",&n);
int i;
for(i=0;i<n;i++)
{
printf("请输入您要插入的值:");
scanf("%d",&e);
insert_rear(list,e);
}
output(list);
delete_rear(list);
delete_rear(list);
output(list);
int sub;
printf("请输入您要查找的下表:");
scanf("%d",&sub);
search_sub(list,sub);
printf("请输入要修改的下表:");
scanf("%d",&sub);
printf("请输入要修改的值:");
scanf("%d",&e);
update_sub(list,sub,e);
output(list);
printf("请输入要插入的下表:");
scanf("%d",&sub);
printf("请输入要插入的值:");
scanf("%d",&e);
insert_sub(list,sub,e);
output(list);
printf("请输入要删除的下表:");
scanf("%d",&sub);
delete_sub(list,sub);
output(list);
datatype key;
printf("请输入查找的值:");
scanf("%d",&key);
int flag=search_data(list,key);
if(flag==-1)
{
printf("查找失败\n");
}
else
{
printf("在下表%d出现\n",flag);
}
printf("请输入被修改的值:");
scanf("%d",&key);
printf("请输入要修改的值:");
scanf("%d",&e);
update_data(list,key,e);
output(list);
printf("请输入要删除的元素:");
scanf("%d",&e);
delete_date(list,e);
sortlist(list);
printf("排序后的顺序表为:");
for(i=0;i<n;i++)
{
printf("%d\t",list->data[i]);
}
return 0;
}