搜档网
当前位置:搜档网 › 线性表的顺序存储结构定义和基本操作算法实现

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

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

/************线性表的顺序存储结构定义和基本操作算法实现************/ #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<=https://www.sodocs.net/doc/722297891.html,st;i++)

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

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

printf("%d\n",https://www.sodocs.net/doc/722297891.html,st);

}

}

(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,

供参考,感谢您的配合和支持)

相关主题