想不通的问题
程序代码:
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++),这样不是省一个变量吗,为什么我见书上有些程序中总是喜欢出现一堆变量,明明这些变量就像这个例子中的一样,完全可以不出现??到底哪种方法在执行中更好一些?从节省时间可节省内存上来看~~