头文件 sqList.h
结构体与方法声明
#ifndef _SQLIST_H
#define _SQLIST_H
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
typedef struct SqList
{
int data[MAX];
int length;
}SqList,*PSqList;
PSqList sqList_Create();//创建并初始化
int sqList_JudageFull(PSqList p);//判断是否为满
int sqList_Insert(PSqList p,int pos,int val);//插入(从0开始)
int sqList_JudgeEmpty(PSqList p);//判断是否为空
int sqList_Delete(PSqList p,int pos);//删除
int sqList_Clean(PSqList p);//清空
int sqList_Destroy(PSqList *q);//摧毁
#endif
实现文件 sqList.c
#include "sqList.h"
PSqList sqList_Create()//创建并初始化
{
PSqList p = (PSqList)malloc(sizeof(SqList));
if(p==NULL)
{
perror("Create fail");
return NULL;
}
p->length=0;
return p;
}
int sqList_JudageFull(PSqList p)//判断是否为满
{
if(p==NULL)
{
perror("SqList is NULL");
return -1;
}
if(p->length >= MAX)
{
return 1;
}
else
{
return 0;
}
}
int sqList_Insert(PSqList p,int pos,int val)//插入(pos从0开始)
{
if(p==NULL)
{
perror("SqList is NULL");
return -1;
}
if(sqList_JudgeFull(p)==1)
{
perror("SqList is Full");
return -1;
}
if(pos > p->length || pos < 0)
{
perror("pos is false");
return -1;
}
for(int i=p->length;i>pos;i--)//从后往前移动
{
p->data[i]=p->data[i-1];
}
p->data[pos]=val;
p->length++;
return 1;
}
int sqList_JudgeEmpty(PSqList p)//判断是否为空
{
if(p==NULL)
{
perror("SqList is NULL");
return -1;
}
if(p->length==0)
{
return 1;
}else
{
return 0;
}
}
int sqList_Delete(PSqList p,int pos)//删除
{
if(p==NULL)
{
perror("SqList is NULL");
return -1;
}
if(sqList_JudgeEmpty(p)==1)
{
perror("SqList is Empty");
return -1;
}
if(pos >= p->length || pos < 0)
{
perror("pos is false");
return -1;
}
for(int i=pos;i<p->length-1;i++)//从前往后移动
{
p->data[i]=p->data[i+1];
}
p->length--;
return 1;
}
int sqList_Clean(PSqList p)//清空
{
if(p==NULL)
{
perror("SqList is NULL");
return -1;
}
p->length=0;
return 1;
}
int sqList_Destroy(PSqList *q)//摧毁
{
free(*q);
*q=NULL;
return 1;
}
如有错误欢迎指正(*^▽^*)