- 论坛徽章:
- 0
|
//线性表的插入
#include <stdio.h>
#include <stdlib.h>
#define list_init_size 100
#define listincrement 10
typedef struct // 定义线性表..
{
int *elem ;
int listlength ;
int listsize ;
} sqlist ;
int initlist(sqlist &l) //键个空表...
{
l->elem=(int *)malloc(list_init_size*sizeof(int)); //开空间..
if(l->elem==NULL)
return 0;
l->listlength=NULL; // 长度为0
l->listsize=list_init_size; //初始分配大小..
return 1;
}
int destroylist(sqlist *l) //销毁表...
{
free(l->elem);
l->elem=NULL;
return 1;
}
int clearlist (sqlist *l) //变为空..
{
l->elem=NULL;
l->listlength=NULL;
return 1;
}
int listempty (sqlist *l) //表为空返回1 ...否0
{
if(l->elem==NULL&&l->listlength==NULL)
return 1 ;
return 0;
}
int listlength (sqlist *l) //表长大小...
{
return(l->listlength);
}
int getelem(sqlist l,int i,int *e) ////用e返回l 表中第i个元素...
{
if(i>=1&&i<=l.listlength)
*e=l.elem[i-1];
}
int priorelem (sqlist &l,int cur_e,int &pre_e) // 用pre_e返回..L表中cur_e的前驱..
{
int i=0;
while (l->elem[i]!=cur_e)
i++;
*pre_e=l->elem[i-1];
}
int nextelem (sqlist l;int cur_e;int &next_e) // 用next返回..L表中cur_e的前驱..
{
int i=0;
while (l.elem[i]!=cur_e)
i++;
*next_e=l.elem[i+1];
}
int listinsert(sqlist &l;int i;int *e) //插入...
{
int m=0;
while(m<10)
{
scanf("%d",&(l->elem[m]));
}
if(l->listlength>=l->listsize)
{*elem=(int *)relloc(l->elem,(listsize+listincrement)*sizeof(int));
if(*elem==UNLL)
return 0;
l->listsize+=listincrement;
}
for(int j=l->listlength-1;j>=i;j--)
{
l->elem[j+1]=l->elem[j]
}
l->elem[j]=*e;
}
main()
{
sqlist a;
int b,c,e,d,f,i;
initlist(&a);
destroylist(&a);
clearlist(&a);
listempty(&a);
listlength(&a);
getelem(a,7,&c);
priorelem(&a,6,&d);
nextelem(&a,5,&e);
listinsert(&a,4,&f);
printf("%d\n",c);
printf("%d\n",d);
printf("%d\n",e);
printf("%d\n",f);
for(i=0;i<=listlength-1;i++)
printf("%5d",l->elem[i]);
}
错了好多啊.....救命啊..谢谢各位高手了啊...
CUO |
|