想不通的问题
程序代码: Status ListInsert(SqList *L,int i,ElemType e) /* 算法2.4 */
{ /* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1 */
/* 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 */
ElemType *newbase,*q,*p;
if(i<1||i>(*L).length+1) /* i值不合法 */
return ERROR;
if((*L).length>=(*L).listsize) /* 当前存储空间已满,增加分配 */
{
newbase=(ElemType *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase)
exit(OVERFLOW); /* 存储分配失败 */
(*L).elem=newbase; /* 新基址 */
(*L).listsize+=LISTINCREMENT; /* 增加存储容量 */
}
q=(*L).elem+i-1; /* q为插入位置 */
for(p=(*L).elem+(*L).length-1;p>=q;--p) /* 插入位置及之后的元素右移 */
*(p+1)=*p;
*q=e; /* 插入e */
++(*L).length; /* 表长增1 */
return OK;
} 想问一下在这个创建顺序线性表的过程中,那个newbase指针变量能不能不要?就是直接用
(*L).elem=(ElemType *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));不是更简单一些?
还有,我见有些程序中,一些变量代指一个算式的结果,只出现一次,比如
q=算式; for(p=1;p<=q;p++)如果直接用
for(p=1;p<=算式;p++),这样不是省一个变量吗,为什么我见书上有些程序中总是喜欢出现一堆变量,明明这些变量就像这个例子中的一样,完全可以不出现??到底哪种方法在执行中更好一些?从节省时间可节省内存上来看~~









