数据结构之顺序表2

来源:互联网 发布:windows update失败 pe 编辑:程序博客网 时间:2024/06/04 18:46

顺序表上的基本操作:

1.初始化一个线性表(即创建一个空的线性表L

void initlist(sqlist *L){  L->data=(ElemType *)malloc(sizeof(ElemType));//存储空间的基地址  L-length = 0;  //长度为0  L->listsize = INITSIZE; //当前的容量为初始量}

2.求表长操作(计算出顺序表L中的全部元素的个数)

int getlen(sqlist *L){  return (L->length);  //返回顺序表L的长度}

3.取元素操作(取出顺序表L中的第i个元素的值)

int getelem(sqlist *L,int i,ElemType e){  if(i<1||i>L->length)  return 0;  //取元素失败  e = L->data[i-1];  return 1;  //取元素 成功}

4.元素定位操作(查找顺序表L中第一个与x值相等的数据元素的位置)

int locate(sqlist *L, ElemType x){  int i=0;  while(i<L->length)    //i小于顺序表L的长度    if(L->data[i-1] == x)    return i+1;    else i++;    return 0;}

5.插入操作

int insert(sqlist *L,int i, ElemType x){  int j;  if(i<1||i>L->length+1)      return 0;    //参数i无效,返回0      if(L->length == L->listsize) //存储空间不够,需增加一个空间      {         L->data=()realloc(L->data,(L-   >listsize+1)*sizeof(ElemType));         L->listsize++;      }  for(j=L->length-1;j>=i-1;j--)   L->data[j+1] = L->data[j];  //序号为i的节点及之后的节点后移一位   L->data[i-1] = x; //在序号i处放入节点x   L->length++; //顺序表长度增加1   return 1;   }

这里写图片描述

6.删除操作

int delete(sqlist *L,int i, ElemType *e){   int j;   if(i<1||i>L->length)        return 0;    //参数i无效,返回0    *e = L->data[i-1];  //将删除的节点存储在e中    for(j=i;j<L->length;j++)       L->data[j-1] L->data[j]; //将i节点及之后节点前移1位       L->length--;  //顺序表的长度减1       return 1;}

这里写图片描述

7.输出操作(输出顺序表L的各数据元素值)

void list(sqlist *L){  int i;  for(i=0;i<L->length;i++)  {    printf("%4d",L->data[i]);  }  printf("\n");}

未完,待续·································

0 0
原创粉丝点击