head1.h
#ifndef _HEAD1_H
#define _HEAD1_H
#define MAXSIZE 8
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
typedef int datatype;
typedef struct
{
int len;
datatype data[MAXSIZE];
}sqlist;
sqlist *Create_list();
int full(sqlist *list);
int insert_rear(int e,sqlist *list);
int Output(sqlist *list);
int empty(sqlist *list);
int delet_rear(sqlist *list);
datatype Search_sub(int sub,sqlist *list);
int updata_sub(sqlist *list,int sub,datatype k);
int insert_sub(sqlist *list,int sub,datatype k);
int delet_sub(int sub,sqlist *list);
int search_key(datatype key,sqlist *list);
int delet_key(datatype key,sqlist *list);
int insert_key(datatype key,sqlist *list,datatype ele);
int updata_key(datatype key,sqlist *list,datatype ele);
#endif
main,主函数
#include "head1.h"
int main(int argc, const char *argv[])
{
sqlist *list=Create_list();
int n;
printf("please enter n:");
scanf("%d",&n);
datatype ele;
for(int i=0;i<n;i++)
{ printf("please enter ele:");
scanf("%d",&ele);
insert_rear(ele,list);
}
Output(list);
delet_rear(list);
// delet_rear(list);
// delet_rear(list);
Output(list);
int sub;
printf("please enter search sub:");
scanf("%d",&sub);
datatype k=Search_sub(sub,list);
if(k!=-1)
printf("查找到的元素为:%d\n",k);
printf("please enter updata:");
scanf("%d",&sub);
printf("please enter updata ele:");
scanf("%d",&k);
updata_sub(list,sub,k);
Output(list);
printf("please enter insert_sub:");
scanf("%d",&sub);
printf("please enter insert_sub ele:");
scanf("%d",&k);
insert_sub(list,sub,k);
Output(list);
printf("please enter delet_sub:");
scanf("%d",&sub);
delet_sub(sub,list);
Output(list);
datatype key;
printf("enter search_key:");
scanf("%d",&key);
int key_sub=search_key(key,list);
if(key_sub==-1)
printf("search_key error\n");
else
printf("search_key sub:%d\n",key_sub);
printf("enter delet_key:");
scanf("%d",&key);
delet_key(key,list);
Output(list);
printf("enter insert_key:");
scanf("%d",&key);
printf("enter insert:");
scanf("%d",&ele);
insert_key(key,list,ele);
Output(list);
printf("enter updata_key:");
scanf("%d",&key);
printf("enter updata:");
scanf("%d",&ele);
updata_key(key,list,ele);
Output(list);
return 0;
}
test1.c 被调函数
#include "head1.h"
sqlist *Create_list()
{
sqlist *list=(sqlist *)malloc(sizeof(sqlist));
if (NULL==list)
return NULL;
list->len=0;
memset(list->data,0,sizeof(list->data));
return list;
}
int full(sqlist *list)
{ return list->len==MAXSIZE?-1:0;}
int insert_rear(int e,sqlist *list)
{ if(NULL==list || full(list))
{ printf("insert error\n");
return -1;}
list->data[list->len]=e;
list->len++;
return 0;
}
int empty(sqlist *list)
{ return list->len==0?-1:0;}
int Output(sqlist *list)
{ if(NULL==list || empty(list))
{ printf("output error\n");
return -1;}
for(int i=0;i<list->len;i++)
printf("%d\t",list->data[i]);
printf("\n");
return 0;
}
int delet_rear(sqlist *list)
{ if(NULL==list || empty(list))
{ puts("delet_rear error");
return -1;}
printf("删除了第%d个元素,值为:%d\n",list->len,list->data[list->len-1]);
list->len--;
return 0;
}
datatype Search_sub(int sub,sqlist *list)
{ if(NULL==list || empty(list) || sub<0 || sub>=list->len)
{ printf("Search error\n");
return -1;}
return list->data[sub];
}
int updata_sub(sqlist *list,int sub,datatype k)
{ if(NULL==list || empty(list) || sub<0 || sub>=list->len)
{ printf("updata error\n");
return -1;}
list->data[sub]=k;
return 0;
}
int insert_sub(sqlist *list,int sub,datatype k)
{ if(NULL==list || full(list) || sub<0 || sub>list->len)
{ printf("insert_sub error\n");
return -1;}
for(int i=list->len-1;i>=sub;i--)
{ list->data[i+1]=list->data[i];}
list->data[sub]=k;
list->len++;
return 0;
}
int delet_sub(int sub,sqlist *list)
{ if(NULL==list || empty(list) || sub<0 || sub>=list->len)
{ printf("delet_sub error\n");
return -1;}
for(int i=sub;i<list->len-1;i++)
list->data[i]=list->data[i+1];
list->len--;
return 0;
}
int search_key(datatype key,sqlist *list)
{ if(NULL==list || empty(list))
return -1;
for(int i=0;i<list->len;i++)
if (list->data[i]==key)
return i;
return -1;
}
int delet_key(datatype key,sqlist *list)
{ int k=search_key(key,list);
delet_sub(k,list);
}
int insert_key(datatype key,sqlist *list,datatype ele)
{ int k=search_key(key,list);
insert_sub(list,k,ele);
}
int updata_key(datatype key,sqlist *list,datatype ele)
{ int k=search_key(key,list);
updata_sub(list,k,ele);
}