题目
按下标插入,删除,修改,查询
1_SeqList.h
#ifndef __SEQLIST__
#define __SEQLIST__
#define N 10
typedef struct
{
int data[N];
int pos;
}SeqList;
SeqList* create_seqList(void);
void insert_seqList(SeqList* sq,int num);
int delete_sqList(SeqList* sq);
void show_seqList(SeqList* sq);
void insert_seqListByindex(SeqList* sq,int index,int num);
int delete_sqListByindex(SeqList* sq,int index);
void change_seqListByindex(SeqList* sq,int index,int num);
int inquire_seqListByindex(SeqList* sq, int index);
#endif
seqlist.c
#include <stdio.h>
#include <stdlib.h>
#include "./1_SeqList.h"
/*
* function: 创建顺序表
* @param [ in]
* @param [out]
* @return
*/
SeqList* create_seqList(void)
{
SeqList* sq=(SeqList*)malloc(sizeof(SeqList));
if(NULL==sq)
{
printf("顺序表创建失败\n");
return NULL;
}
sq->pos=0;
return sq;
}
/*
* function: 插入数据
* @param [ in]
* @param [out]
* @return
*/
void insert_seqList(SeqList* sq,int num)
{
if(sq->pos >= N)
{
printf("顺序表为满,插入失败\n");
return;
}
sq->data[sq->pos]=num;
sq->pos++;
return;
}
/*
* function: 删除数据
* @param [ in]
* @param [out]
* @return
*/
int delete_sqList(SeqList* sq)
{
if(0 == sq->pos)
{
printf("顺序表为空,删除失败\n");
return (int)(-1);
}
sq->pos--;
int num = sq->data[sq->pos];
return num;
}
/*
* function: 遍历数组
* @param [ in]
* @param [out]
* @return
*/
void show_seqList(SeqList* sq)
{
for(int i=0;i<sq->pos;i++)
{
printf("%d\t",sq->data[i]);
}
printf("\n");
return;
}
/*
* function: 按照位置插入数据
* @param [ in]
* @param [out]
* @return
*/
void insert_seqListByindex(SeqList* sq,int index,int num)
{
if(sq->pos >= N)
{
printf("顺序表为满,插入失败\n");
return;
}
if(index<0 || index>sq->pos)
{
printf("index=%d位置非法,插入失败\n",index);
return;
}
for(int j=sq->pos;j>=index+1;j--)
{
sq->data[j] = sq->data[j-1];
}
sq->data[index]=num;
sq->pos++;
return;
}
/*
* function: 删除数据
* @param [ in]
* @param [out]
* @return
*/
int delete_sqListByindex(SeqList* sq, int index)
{
if(0 == sq->pos)
{
printf("顺序表为空,删除失败\n");
// return;
}
if(index<0 || index>sq->pos)
{
printf("index=%d位置非法,删除失败\n",index);
// return;
}
// int j=index+1;
int tem;
tem=sq->data[index];
for(int j=index+1;j<=sq->pos-1;j++)
{
sq->data[j-1]=sq->data[j];
}
sq->pos--;
printf("tem=%d\n",tem);
return tem;
}
/*
* function: 按下标位置修改数据
* @param [ in]
* @param [out]
* @return
*/
void change_seqListByindex(SeqList* sq,int index,int num)
{
if(0 == sq->pos)
{
printf("顺序表为空,修改失败\n");
return;
}
if(index<0 || index>sq->pos)
{
printf("index=%d位置非法,修改失败\n",index);
return;
}
sq->data[index]=num;
return;
}
/*
* function: 按下标位置查询数据
* @param [ in]
* @param [out]
* @return
*/
int inquire_seqListByindex(SeqList* sq, int index)
{
if(0 == sq->pos)
{
printf("顺序表为空,修改失败\n");
// return;
}
if(index<0 || index>sq->pos)
{
printf("index=%d位置非法,修改失败\n",index);
// return;
}
int var;
var=sq->data[index];
printf("var=%d\n",var);
return var;
}
main.c
#include <stdio.h>
#include "1_SeqList.h"
int main(int argc, const char *argv[])
{
SeqList* sq=create_seqList();
insert_seqList(sq,100);
delete_sqList(sq);
insert_seqList(sq,99);
insert_seqList(sq,97);
insert_seqList(sq,96);
insert_seqList(sq,88);
insert_seqList(sq,95);
delete_sqList(sq);
insert_seqList(sq,93);
show_seqList(sq);
insert_seqListByindex(sq,4,10);
show_seqList(sq);
insert_seqListByindex(sq,2,66);
show_seqList(sq);
delete_sqListByindex(sq,3);
show_seqList(sq);
change_seqListByindex(sq,1,77);
show_seqList(sq);
inquire_seqListByindex(sq,0);
show_seqList(sq);
return 0;
}