存储结构定义的时候可以不用指针,我写顺序表的时候就没用。
#define maxsize 100
typedef char ElemType;
//定义顺序表
typedef struct
{ElemType elem[maxsize];
int last;
}SeqList;
//创建顺序表
SeqList * Init_SeqList()
{SeqList *L;
L=(SeqList *) malloc (sizeof(SeqList));
if(L!=NULL)
{L->last=-1;
}
printf("成功创建一个顺序表\n");
return L;
}
第二个问题
你调用函数的时候如果形参是指针的话,那函数内部直接修改的是指针所指地址的值,那么哪怕没有返回值,这个改变也是真实的。
像插入和删除函数:
//插入
int Insert_SeqList(SeqList *L)
{int i,j;
ElemType e;
printf("\n请输入插入的位置和内容:");
scanf("%d %c",&i,&e);
if(L->last>=maxsize-1)
{printf("表已满无法插入\n");
return 0;
}
if((i<1)||(i>L->last+2))
{printf("插入位置i不合法");
return -1;
}
for(j=L->last;j>=i-1;j--)
L->elem[j+1]=L->elem[j];
L->elem[i-1]=e;
L->last++;
return 1;
}
//删除
int Delete_SeqList(SeqList *L)
{ int i,k;
ElemType n;
ElemType *e;
e=&n;
printf("\n请输入删除的位置:");
scanf("%d",&i);
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法!");
return 0;
}
else
{*e=L->elem[i-1];
for(k=i;k<=L->last;k++)
L->elem[k-1]=L->elem[k];
L->last--;
}
return 1;
}