头文件;
#ifndef __HEAD_H__
#define __HEAD_H__
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXSIZE 10
typedef int datatype;
typedef struct
{
int data[MAXSIZE];
int len;
}seqlist;
void menue();
seqlist *create();
int insert_rear(datatype e,seqlist *list);
int output(seqlist *list);
int find_sub(seqlist *list,int sub);
int delete(seqlist *list);
int insert_sub(seqlist *list,int sub, int number);
int delete_sub(seqlist *list,int sub);
int update_sub(seqlist *list,int sub,int number) ;
int find_data(seqlist *list,datatype key);
int delete_key(seqlist *list,int key);
int change_key(seqlist *list,int key,int e)
#endif
主函数
#include"head.c"
int main(int argc,char*argv[])
{
menue();
seqlist *list=create();
int number;
while(1)
{
printf("请输入您的选择:");
scanf("%d",&number);
switch(number)
{
case 1:
{
int n;
datatype e;
printf("请输入尾插的个数:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("请输入你要插入的数:");
scanf("%d",&e);
insert_rear(e,list);
}
}
break;
case 2:
{
output(list);
}
break;
/* case 3:
{
int number;
printf("输入查找的数:");
scanf("%d",&number);
int sub=find(list,number);
if(sub==-1)
{
printf("查找失败:");
}
else
{
printf("下标为:%d\n",sub);
}
}
break;*/
case 4:
{
delete(list);
}
break;
case 5:
{
printf("输入插入的下标:\n");
int sub;
scanf("%d",&sub);
int number;
printf("输入插入的数:\n");
scanf("%d",&number);
insert_sub(list,sub,number);
}
break;
case 6:
{
int sub;
printf("输入删除的下标:");
scanf("%d",&sub);
delete_sub(list,sub);
}
break;
case 7:
{
printf("输入更新的下标:");
int sub;
scanf("%d",&sub);
printf("输入更新的数:");
int number;
scanf("%d",&number);
update_sub(list, sub, number);
}
break;
case 8:
{
int sub;
printf("请输入查找下标:\n");
scanf("%d",&sub);
find_sub(list,sub);
}
break;
case 9:
{
datatype key;
printf("请输入查找的元素:");
scanf("%d",&key);
int flag=find_data(list,key);
if(flag==-1)
{
printf("查找的元素不存在\n");
}
else
{
printf("在%d下表出现\n",flag);
}
}
break;
default:printf("输入错误,请重新输入你的选择\n");break;
case 0:printf("退出程序\n");exit(0);
}
}
free(list);
list=NULL;
return 0;
}
自定义函数
#include"head.c"
void menue()
{
puts("\t******");
puts("\t1,表尾部插入");
puts("\t2,输出");
puts("\t3,删除");
puts("\t4,按下标插入");
puts("\t5,按下标删除");
puts("\t6,按下标更新数");
puts("\t7,查找元素下标");
puts("\t8,按下标查找元素");
puts("\t9,按元素插入");
puts("\t10,按元素修改");
puts("\t11,按元素删除");
puts("\t12,排序顺序表");
puts("\t0,退出整个程序");
puts("\t*****);
}
//申请空间
seqlist *create()
{
seqlist *list=(seqlist *)malloc(sizeof(seqlist));
if(list==NULL)
{
printf("申请失败:");
return NULL;
}
list->len=0;
return list;
}
//插入元素
int insert_rear(datatype e,seqlist *list)
{
if(list==NULL||list->len==MAXSIZE)
{
printf("插入失败:\n");
return -1;
}
list->data[list->len]=e;
list->len++;
}
//输出
int output(seqlist *list)
{
if(list==NULL||list->len==0)
{
puts("顺序表为空:");
return -1;
}
for(int i=0;i<list->len;i++)
{
printf("%d\t",list->data[i]);
}
puts("");
}
/*int find(seqlist *list,int number)
{
int sub;
if(list==NULL||list->len==0)
{
printf("查找失败:\n");
return -1;
for(int i=0;i<list->len;i++)
{
if(list->data[i]==number)
{
return i;
}
else
printf("查找失败:\n");
return -1;
}
}
}*/
int find_data(seqlist *list,datatype key)
{
//1,判断顺序表创建是否成功
//2,判断顺序表是否空
if(list==NULL || list->len==0)
{
return -1;
}
//3,查找
for(int i=0;i<list->len;i++)
{
if(list->data[i]==key)
{
return i;
}
}
return -1;
}
删除尾部数据
int delete(seqlist *list)
{
if(list==NULL||list->len==0)
{
printf("删除失败:");
return -1;
}
list->len--;
printf("删除成功:");
return 0;
}
按下表插入数据
int insert_sub(seqlist *list,int sub,int number)
{
if(list==NULL||list->len==0||sub<0||sub>MAXSIZE)
{
printf("插入失败:\n");
}
for(int i=list->len-1;i>=sub;i--)
{
list->data[i+1]=list->data[i];
}
list->data[sub]=number;
list->len++;
puts("插入成功");
return 0;
}
按下标删除数据
int delete_sub(seqlist *list,int sub)
{
if(list==NULL||list->len==0||sub<0||sub>MAXSIZE)
{
printf("删除失败:\n");
return -1;
}
for(int i=sub+1 ;i<list->len;i++)
{
list->data[i-1]=list->data[i];
}
list->len--;
return 0;
}
按下标更新数据
int update_sub(seqlist *list,int sub,int number)
{
if(list==NULL||list->len==0||sub<0||sub>=list->len)
{
printf("更新失败:\n");
return -1;
}
list->data[sub]=number;
puts("更新成功:");
return 0;
}
按元素查找
int find_sub(seqlist *list,int sub)
{
if(list==NULL||list->len==0||sub<0||sub>list->len)
{
printf("查找失败:\n");
return -1;
}
printf("查找的元素是:%d\n",list->data[sub]);
return 0;
}
//按元素删除
int delete_key(seqlist *list,int key)
{
int sub=search_sub(list,key);
if(sub==-1)
{
return -1;
}
delete_sub(list,sub);
return 0;
}
//按元素修改
int change_key(seqlist *list,int key,int e)
{
int sub=search_sub(list,key);
if(sub==-1)
{
return -1;
}
if(list==NULL||empty_seqlist(list)||sub<0||sub>=list->len)
{
printf("修改失败\n");
return -1;
}
list->data[sub]=e;
printf("修改成功\n");
}
//顺序表排序
int sort_seqlist(seqlist *list)
{
if(empty_seqlist(list))
{
printf("排序失败\n");
return -1;
}
for(int i=1;i<list->len;i++)
{
int max=list->data[i];
for(int j=0;j<list->len-i;j++)
{
if(list->data[j]>list->data[j+1])
{
int max=list->data[j];
list->data[j]=list->data[j+1];
list->data[j+1]=max;
}
}
}
printf("排序成功\n");
return 0;
}
————————————————