数据结构_线性表顺序sequence List

/**有序且有限,使用数组方式描述**/


#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值