按下标修改:
按下标插入:
自定义函数:
#include "head.h"
/*
* function: 在堆区申请空间
* @param [ in]
* @param [out]
* @return
*/
sqlist * create()
{
sqlist* list=(sqlist*)malloc(sizeof(sqlist));
if(NULL==list)
{
return NULL;
}
// int arr[5];
// memset(arr,0,sizeof(arr));
// void *memset(void *s,int c,size_t n)
// 特点:只可以清0和-1,以及字符
// void*s:表示数组的地址
// int c:表示清的值
// size_t n:表示数组的字节大小
//对数据元素清0
memset(list->data,0,sizeof(list->data));
//顺序表长度清0
list->len=0;
return list;
}
/*
* function: 顺序表为满
* @param [ in]
* @param [out]
* @return
*/
int full_sqlist(sqlist *list)
{
return list->len==MAXSIZE?-1:0;
}
/*
* function: 顺序表为空
* @param [ in]
* @param [out]
* @return
*/
int empty_sqlist(sqlist *list)
{
return list->len==0?-1:0;
}
/*
* function: 输出
* @param [ in]
* @param [out]
* @return
*/
int output(sqlist*list)
{
if(NULL==list||empty_sqlist(list))
{
puts("ERROR");
return -1;
}
for(int i=0;i<list->len;i++)
{
printf("%d\t",list->data[i]);
}
puts("");
return 0;
}
/*
* function: 修改对应下标的值
* @param [ in]
* @param [out]
* @return
*/
int updata_sqlist(sqlist*list,int sub,int element)
{
if(NULL==list||empty_sqlist(list)||sub<0||sub>=list->len)
{
printf("error\n");
return -1;
}
list->data[sub]=element;
return 0;
}
/*
* function: 按下标插入
* @param [ in]
* @param [out]
* @return
*/
int insert_sub(sqlist*list,int sub,int element)
{
if(NULL==list||full_sqlist(list)||sub<0||sub>list->len)
{
printf("error\n");
return -1;
}
for(int i=list->len-1;i>=sub;i--)
{
list->data[i+1]=list->data[i];
}
list->data[sub]=element;
list->len++;
return 0;
}
main函数
#include "head.h"
int main(int argc, const char *argv[])
{
sqlist*list=create();
//尾插:一次只能插入一个
int n;
int element;
printf("please enter n:\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("please enter %d element:",i+1);
scanf("%d",&element);
insert_rear(list,element);
}
output(list);
// delete_rear(list);
// delete_rear(list);
// output(list);
int sub;
// printf("请输入下标:\n");
// scanf("%d",&sub);
// search_by_sub(list,sub);
printf("请输入要修改的下标:\n");
scanf("%d",&sub);
printf("请输入要修改的值:\n");
scanf("%d",&element);
updata_sqlist(list,sub,element);
output(list);
printf("请输入在哪个下标插入:\n");
scanf("%d",&sub);
printf("请输入插入的值:\n");
scanf("%d",&element);
insert_sub(list,sub,element);
output(list);
return 0;
}
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
//写预处理命令
//函数声明
//结构体
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 10//定义顺序表长度MAXSIZE为10
//定义顺序表结构体 :数据元素 顺序表长度
typedef struct Sqlist//类型重定义
{
//数据元素(存储int类型)
int data[MAXSIZE];
//顺序表长度
int len;
}sqlist;//起别名
sqlist * create();//申请堆区
int full_sqlist(sqlist *list);//顺序表满的函数
int insert_rear(sqlist*list,int element);//尾插
int empty_sqlist(sqlist *list);//顺序表为空
int output(sqlist*list);//输出
int delete_rear(sqlist*list);//尾删
int search_by_sub(sqlist*list,int sub);//查找
int updata_sqlist(sqlist*list,int sub,int element);//修改
int insert_sub(sqlist*list,int sub,int element);//下标插入
#endif
思维导图: