顺序存储结构勋续表描述:
#define Maxsize maxlen /*maxlen表示线性表可能的最大数据元素数目*/
typedef int elemtype; /*elemtype表示数据元素类型,此处定义为int*/
typedef struct
{elemtype v[Maxsize]; /*存放线性表元素的数组,关系隐含*/
int len; /*表示线性表的长度*/
}sqlist;
:
int lenth(sqlist *L)
{
int lenth;
lenth=(*L).len;
return(lenth); /*返回线性表的长度*/
}
算法 :
int insert(sqlist *L,int i,elemtype x)
/*L为sqlist顺序表类型指针变量,i为插入元素的位序号,x为插入元素的值*/
{
int j;
if ((*L).len==maxlen) /*判断线性表的存储空间是否已满*/
{
printf("溢出!/n");
return 0;
}
else
if ((i<1)||i>(*L).len+1) /*检查i值是否超出所允许的范围*/
{
printf("插入位置不正确/n");
return 0;
}
else
{
for(j=(*L).len-1;j>=i-1;j--)
/*将第i个元素和它后面的所有元素均后移一个位置*/
(*L).v[j+1]=(*L).v[j];
(*L).v[i-1]=x; /* 将新的元素写入到空出的下标为i-1的位置上*/
(*L).len=(*L).len+1; /*线性表的长度增加1*/
return 1;
}
}
int delete_sq(sqlist *L,int i,elemtype *y)
/*L为sqlist顺序表类型指针变量,i为删除元素的位序号,删除元素的值通过y代出*/
{
int j;
if ((i<1)||(i>(*L).len)) /* 判断i值是否超出所允许的范围*/
{
printf("删除位置不正确/n");
return 0;
}
else
{
*y=(*L).v[i-1]; /* 把第i个元素赋给*y */
for (j=i;j<(*L).len;j++)
/* 把第i个元素后的所有元素依次向前移动一个位置*/
(*L).v[j-1]=(*L).v[j];
(*L).len=(*L).len-1; /* 线性表长度减1*/
return 1;
}
}
typedef char elemtype; /*指定elemtype为char类型*/
Lnode *creat() /*表头插入法,建立单链表,通过函数返回头指针*/
{
elemtype ch;
Lnode *h,*p;
h=(Lnode*)malloc(sizeof(Lnode)); /*建立一个头结点*/
h->next=NULL; /*使头结点的指针域为空*/
while ((ch=getch
算法勘误 线性表 来自淘豆网www.taodocs.com转载请标明出处.