线性表的顺序存储结构定义和基本操作算法实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/************线性表的顺序存储结构定义和基本操作算法实现************/ #include "stdio.h"

/***********************线性表的顺序存储结构定义*******************/ #define MAX 11 /*线性表可能达到的最大长度值*/ typedef int datatype;

typedef struct

{datatype data[MAX];

int last;}list;

/************************1.线性表的初始化***************************/ void init(list *lp)

{lp->last=0;}

/************************2.求线性表的长度***************************/ int length(list *lp)

{ return (lp->last);}

/***************3.插入运算,在表第i个位置插入一个值为x的新元素******/ void insert(list *lp,int i,datatype x)

{ int j;

if(lp->last==MAX-1)

printf("Overflow!\n"); /*表已满*/

else if(i<1||i>lp->last+1)

printf("Error!\n"); /*插入位置错误*/

else

{for(j=lp->last;j>=i;j--)

lp->data[j+1]=lp->data[j]; /*数据元素后移*/

lp->data[i]=x; /*插入x */

lp->last++; /*表长度加1*/

}

}

/***************4.删除运算,在表中删除第i个数据元素***************/ void delete(list *lp,int i)

{ int j;

if(i<1||i>lp->last) /*检查空表及删除位置的合法性*/ printf("The %dth element is not exist!",i); /*不存在第i个元素*/

else

{for(j=i+1;j<=lp->last;j++)

lp->data[j-1]=lp->data[j]; /*向前移动元素*/

lp->last--; /*表长度减1 */

}

}

/*****************5.查找运算,在表中查找x数据元素*****************/

int locate(list *lp,datatype x)

{ int i=lp->last;

while(i>0 && lp->data[i]!=x)i--;

return i;

}

/*int locate(list *lp,datatype x)

{int i=1;

while( i<=lp->last && lp->data[i]!=x ) i++;

if(i<=lp->last) return i; /*返回i下标,即元素位置*/

/* else return 0;

} */

/*******************主函数调用线性表操作算法函数****************/

main()

{

list lst;

int i,x,c;

while(1)

{printf("\n\n");

printf("1-init\n");

printf("2-length\n");

printf("3-insert\n");

printf("4-delete\n");

printf("5-locate\n");

printf("0-exit\n");

printf("Please enter your selection:");

scanf("%d",&c);

switch(c)

{case 1:init(&lst);break;

case 2:length(&lst);break;

case 3:printf("Please input i and x:");scanf("%d%d",&i,&x);insert(&lst,i,x);break;

case 4:printf("Please input i :");scanf("%d",&i);delete(&lst,i);break;

case 5:printf("Please input x:");scanf("%d",&x);if(locate(&lst,x))printf("\nLocation is %d\n",locate(&lst,x));else printf("Not found!\n");break;

case 0:exit(1);

}

printf("Data elements of the linear list is:"); /*输出线性表数据元素*/

for(i=1;i<=st;i++)

printf("%d ",lst.data[i]);

printf("\nLength of the linear list is:"); /*输出线性表长度*/

printf("%d\n",st);

}

}

相关文档
最新文档