顺序表存储结构及常见操作(
#ifndef __seqlist__
#define __seqlist__
#include <>
*顺序表存储空间长度的最小值*/
#define listminsize 10
*顺序表存储结构类型定义*/
typedef struct
listdt *base; /顺序表空间基地址*/
int listsize; /顺序表空间尺寸*/
int len顺序表长度*/
seqlist;
*顺序表初始化*/
void listinitialize(seqlist *pl, int size)
if(size size=listminsize; /限定不能小于最小尺寸*/
pl->listsize=size;
pl->base=(listdt *)malloc(pl->listsize*sizeof(listdt));
if(!pl->base)
exit(exit_failure);
pl->len =0初始化空表*/
*按给定的下标取顺序表元素值*/
bool listelem(seqlist l, int index, listdt *pelem)
bool ***=true;
if(index<0 ||index> )
***=false参数越界*/
else*pelem=
return ***;
*求顺序表长度*/
int listlen(seqlist l)
return
*在顺序表中指定序号位置插入元素*/
bool listinsert(seqlist *pl, int pos, listdt d)
bool ***=true;
int i;
if(pos<0 ||pl->len>=pl->listsize ||pos>pl->len)
***=false;
elsereturn ***;
*把顺序表中指定序号的元素删除*/
bool listdel(seqlist *pl, int pos)
bool ***=true;
int i;
if(pos<0 ||pos>=pl->len)
***=false;
elsereturn ***;
*在顺序表中查找元素*/
int listloc(seqlist l, listdt d,bool (*equal)(listdt, listdt))
int pos=
while(pos>=0 &&equal)(
pos--;
return pos;
*取前导元素序号位置*/
bool listprior(seqlist l, int pos, int *ppriorpos)
bool ***=true;
if(pos>0 &&pos<
*ppriorpos=pos-1;
else***=false;
return ***;
*取后继元素序号位置*/
bool listnext(seqlist l, int pos, int *pnextpos)
bool ***=true;
if(pos>=0 &&pos<
*pnextpos=pos+1;
else***=false;
return ***;
*销毁顺序表*/
void listdestroy(seqlist l)
free(#endif
建议性测试用程序。
typedef enum bool;
typedef int listdt;
#include ""
void printseqlist(seqlist l)
int i;
listdt x;
printf("list:");
for(i=0; i
bool dataequal(int x, int y)
return (x==y)? true:false;
#define n 5
void main()
int i,prior,next;
listdt x,test[n]=;
seqlist l;
/*初始化顺序表*/
listinitialize(&l,n);
/*在表头插入n个元素*/
for(i=0; i listinsert(&l,0,test[i]);
printseqlist(l);
/*删除元素*/
listdel(&l,n/2);
printseqlist(l);
printf("input a key:");
scanf("%d",&x);
/*查找x在表中位置*/
i=listloc(l,x,dataequal);
/*求x的前导元素*/
if(listprior(l,i,&prior))
elseprintf("no prior.");
/*求x的后继*/
if(listnext(l,i,&next))
elseprintf("no next.");
/*求表长*/
printf("list length=%d",listlen(l));
/*销毁顺序表*/
listdestroy(l);
数据结构线性表答案
2.1 描述以下三个概念的区别 头指针,头结点,首元结点 第一个元素结点 解 头指针是指向链表中第一个结点的指针。首元结点是指链表中存储第一个数据元素的结点。头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。它可以对空表 非空表以及首...