数据结构基本操作源代码 (二)

2014-11-24 03:09:15 · 作者: · 浏览: 6
la.length ;
}

Status getelem(Sqlist la,ElemType k)
{

return la.elem[k];
}

Status priorelem(Sqlist &la,ElemType e ,ElemType &pre_e )
{
ElemType i;
for (i=0; i<=la.length-1;i++)
if(la.elem[i]==e)
pre_e=la.elem[i-1];
return OK;
}

Status nextelem(Sqlist &la,ElemType e ,ElemType &next_e )
{
ElemType i;
for (i=0; i<=la.length-1;i++)
if(la.elem[i]==e)
next_e=la.elem[i+1];
return OK;
}

Status listdelete(Sqlist &la,ElemType k,ElemType &e)
{
ElemType j;
if((k<1)||(k>la.length)) return ERROR;
e=la.elem[k-1];
for(j=k+1;j<=la.length-1;j++)
la.elem[j-1]=la.elem[j];
--la.length;
return OK;
}

Status listinsert(Sqlist &la,ElemType k,ElemType e)
{
ElemType j;
if((k<1)||(k>la.length+1)) return ERROR;
/*if(l.length>=l.listsize)
{*/

for(j=la.length;j>=k;j--)
la.elem[j]=la.elem[j-1];
la.elem[k]=e;
++la.length;
return OK;
}

Status main()
{

makelist(la);
do{
printf("1:求表长\n");
printf("2:取第k个元素\n");
printf("3:e的前驱\n");
printf("4:e的后继\n");
printf("5:删除第k个元素 \n");
printf("6:在第k个元素后面插入\n");
printf("0:操作结束!\n");
printf("Enter your choice :\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
listlengh(la);
printf("the length is %d\n",listlengh(la));
break;

case 2:
printf("Enter a number k :");
scanf("%d",&k);
getelem(la, k);
printf("k is %d\n",getelem(la,k));
break;

case 3:
printf("Enter a number e:\n");
scanf("%d",&e);
priorelem(la, e , pre_e );
if(priorelem(la, e , pre_e ))
printf("The priorelem is %d\n",pre_e);
break;

case 4:
printf("Enter a number e:\n");
scanf("%d",&e);
nextelem(la, e , next_e );
if(nextelem(la, e , next_e ))
printf("The nextelem is %d\n",next_e);
break;

case 5:
printf("Enter a number k :");
scanf("%d",&k);
listdelete(la,k,e);
printf("the delete number is:%d\n",e);
break;
case 6:
printf("Enter a number k :");
scanf("%d",&k);
printf("the insert number is:");
scanf("%d",&e);
listinsert(la,k,e);
break;
case 0:
printf("操作结束!");
break;

}
}while(choice!=0); //end of while
return OK; }
************************************************************************************************************
链表
************************************************************************************************************
#include
#include
#define OK 0
#define ERROR -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct LNode{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode,*Linklist;Status GetElem_L(Linklist L,int i,ElemType &e) //L为带头结点的单链表的头指针,取第i个元素,并用e返回
{
Lin