/**有序且有限,使用数组方式描述**/
#include<stdio.h>
#define LISTSIZE 1000
typedef int DataType;
/*定义一个结构体,这个方式和16invent文件里面的不一样,其实这个方式不如16invent里面的,如果把nLength作为一个全局,这个结构体不见得比一个数组有意义*/
/*16inven里面
struct inventory{
char name[20];
int munber;
} parts[100];
*/
struct seqList
{
DataType data[LISTSIZE];
int nLength; //实际数目,话说这个值一直没有初始化是不对的吧。
};
/********************
*函数声明,如果是cpp格式的,相当于在C++中,struct可以略去
*在C++中bool及其值false和ture在库中,C中需要自己定义,我觉得可以用void类型函数,输出句子来达到分辨的效果。
*********************/
int listLength(struct seqList *list);//表长度
DataType *getNode(strct seqList *list, int index);//指定下标位置的数值
int locateNode(struct seqList *list,DataType x);//查找制定元素的位置
bool insert(struct seqList *list,int index,DataType x);//插入,返回是否插入成功
bool erase(struct seqList *list,int index);//删除
bool set(struct seqList *list,int index,DataType x);//修改
void trave(struct seqList *list);//遍历
//函数实现
int listLength(struct seqList *list)
{
return list->nLength;//结构体体现的价值所在,注意
}
DataType *getNode(strct seqList *list, int index)
{
if(index<0 || index>=list->nlength)
return NULL; //采用取地址方式的原因,防止造成数据误解
else return &(list->data[index]);
}
int locateNode(struct seqList *list,DataType x)
{
for(int i=0;i<nLength;i++){
if(x==list->data[i])
retrun i;
}
return -1;
}
bool insert(struct seqList *list,int index,DataType x)
{
if(list->nLength==LISTSIZE)
return false;
int insertPosition=index;//调整修饰
if(index<0)
insertPosition=0;
else if(index>list->nLength)
insertPositon=list->nLength;
for(int i=list->nLength;i>insertPosition;i--)
list->data[i]=list->data[i-1];
list->data[insertPosition]=x;
(list->nLengh)++; //括号可以不加,调整表长
return ture;
}
}
bool erase(struct seqList *list,int index)
{
if(index<0 ||index>=list->nLength)
return false;
for(int i=index;i<list->nLength;i++)
list->data[i]=list->data[i+1];
list->nLength--;
return true;
}
bool set(struct seqList *list,int index,DataType x)
{
if(index<0 ||index>=list->nLength)
return false;
list->data[index]=x;
return true;
}
void trave(struct seqList *list)
{
for(int i=0;i<list->nLength;i++)
printf("第%d个元素是%d",i,list->data[i]);
}
//
int main()
{
//调用的时候,注意第一个变量都是取了地址
return 0;
}