一、思维导图

二、实现顺序表的功能代码
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 5
enum type
{
FALUSE=-1,
SUCCESS
};
typedef int datatype;
typedef struct sqlist
{
datatype data[MAXSIZE];
int len;
}*sqlist;
sqlist create_sqlist();
int insert_rear(sqlist list,datatype element);
int output(sqlist list);
int delate_rear(sqlist list);
int search_index(sqlist list,datatype index);
int delate_index(sqlist list,datatype index);
int change_index(sqlist list,int index,int element);
int insert_index(sqlist list,int index,int element);
int de_weight(sqlist list);
int sort(sqlist list);
int search_yuansu(sqlist list,int number);
int delate_yuansu(sqlist list,int number);
int change_yuansu(sqlist list,int number,int element);
#endif
test.c
#include "head.h"
sqlist create_sqlist()
{
sqlist list=(sqlist)malloc(sizeof(struct sqlist));
if(NULL==list)
{
return NULL;
}
bzero(list->data,sizeof(list->data));
list->len=0;
return list;
}
int insert_rear(sqlist list,datatype element)
{
if(NULL==list||list->len==MAXSIZE)
{
printf("sqlist full..\n");
return FALUSE;
}
list->data[list->len]=element;
list->len++;
return SUCCESS;
}
int output(sqlist list)
{
if(list==NULL||list->len==0)
{
printf("output error...\n");
return FALUSE;
}
for(int i=0;i<list->len;i++)
{
printf("%d\t",list->data[i]);
}
putchar(10);
}
int delate_rear(sqlist list)
{
if(list==NULL||list->len==0)
{
printf("delate_rear error..\n");
return FALUSE;
}
list->len--;
return SUCCESS;
}
int search_index(sqlist list,datatype index)
{
if(list==NULL||list->len==0||index<0||index>=list->len)
{
printf("search_index error...\n");
return FALUSE;
}
printf("%d\n",list->data[index]);
return SUCCESS;
}
int delate_index(sqlist list,datatype index)
{
if(list==NULL||list->len==0||index<0||index>=list->len)
{
printf("delate_index error...\n");
return FALUSE;
}
for(int i=index;i<list->len;i++)
{
list->data[i]=list->data[i+1];
}
list->len--;
return SUCCESS;
}
int change_index(sqlist list,int index,int element)
{
if(list==NULL||list->len==0||index<0||index>=list->len)
{
printf("change_index error...\n");
return FALUSE;
}
list->data[index]=element;
return SUCCESS;
}
int insert_index(sqlist list,int index,int element)
{
if(list==NULL||index<0||index>list->len)
{
printf("insert_index error...\n");
return FALUSE;
}
if(list->len==MAXSIZE)
{
printf("内存已满无法插入\n");
return FALUSE;
}
list->len++;
for(int i=list->len;i>index;i--)
{
list->data[i-1]=list->data[i-2];
}
list->data[index]=element;
return SUCCESS;
}
int de_weight(sqlist list)
{
if(list==NULL||list->len==0)
{
printf("de_weight error..\n");
return FALUSE;
}
for(int i=0;i<list->len;i++)
{
for(int j=i+1;j<list->len;j++)
{
if(list->data[i]==list->data[j])
{
delate_index(list,j);
j--;
}
}
}
return SUCCESS;
}
int sort(sqlist list)
{
if(list==NULL||list->len==0)
{
printf("sort error..\n");
return FALUSE;
}
for(int i=0;i<list->len-1;i++)
{
for(int j=0;j<list->len-i-1;j++)
{
if(list->data[j]>list->data[j+1])
{
int temp=list->data[j];
list->data[j]=list->data[j+1];
list->data[j+1]=temp;
}
}
}
return SUCCESS;
}
int search_yuansu(sqlist list,int number)
{
if(list==NULL||list->len==0)
{
printf("sort error..\n");
return FALUSE;
}
for(int index=0;index<list->len;index++)
{
if(list->data[index]==number)
{
return index;
}
}
return FALUSE;
}
int delate_yuansu(sqlist list,int number)
{
if(list==NULL||list->len==0)
{
printf("delate_yuansu error..\n");
return FALUSE;
}
int index=search_yuansu(list,number);
delate_index(list,index);
return SUCCESS;
}
int change_yuansu(sqlist list,int number,int element)
{
if(list==NULL||list->len==0)
{
printf("change_yuansu error..\n");
return FALUSE;
}
int index=search_yuansu(list,number);
change_index(list,index,element);
return SUCCESS;
}
main.c
#include "head.h"
int main(int argc, const char *argv[])
{
sqlist list=create_sqlist();
datatype element;
for(int i=0;i<MAXSIZE;i++)
{
printf("请输入一个值:");
scanf("%d",&element);
insert_rear(list,element);
}
output(list);
delate_rear(list);
delate_rear(list);
printf("尾删之后;");
output(list);
int index;
printf("输入要查找的下标的值:");
scanf("%d",&index);
search_index(list,index);
printf("输入要修改的下标:");
scanf("%d",&index);
printf("输入要改成的值:");
scanf("%d",&element);
change_index(list,index,element);
output(list);
printf("输入要删除值的下标:");
scanf("%d",&index);
delate_index(list,index);
output(list);
printf("输入要插入值的下标:");
scanf("%d",&index);
printf("输入要插入的值:");
scanf("%d",&element);
insert_index(list,index,element);
de_weight(list);
printf("去重后的结果:");
output(list);
sort(list);
printf("顺序表排序后的结果:");
output(list);
index=search_yuansu(list,14);
printf("元素查找的下标:");
printf("%d\n",index);
delate_yuansu(list,14);
printf("按元素删除后的结果:");
output(list);
change_yuansu(list,14,54);
printf("按元素修改后的结果:");
output(list);
free(list);
list=NULL;
return 0;
}