| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 930 人关注过本帖
标题:严的书就是看不懂
取消只看楼主 加入收藏
coolda
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-3-15
收藏
 问题点数:0 回复次数:0 
严的书就是看不懂
严的书就是看不懂,不知道是本人基础差,比较笨的原因,还是真的是复杂化了

下面抄两段代码,一段是严的,另一段是自考书<<数据结构导论的>>

带着一些疑问,希望有人解答一下。


来自数据结构导论 :

1。定义顺序表

const maxsize=100;
typedef struct
{
int data[maxsize];
int last; //数据域当前的长度
}sqlist;

sqlist L;

2.插入运算

void insert_sqlist(sqllist L int x,int i)
{
if (L.last==maxsize)error('表满'); /*溢出*/
if ((i<1)||(i>L.last+1))error('非法位置');
for(j=L.last;j=i;j--)
 L.data[j]=L.data[j-1];
L.data[i-1]=x;
L.last=L.last+1;

}

(1)last都没被赋怎么表示顺序表的末点?
 (2)i>L.last+1 为什么要L.last+1才表示溢出? >L.last不就可以表示溢出?
 (3)为什么要在第i个位置上插入x,却是L.date[i-1]位置插入,是因为数组从0开始,所以i-1?
 

摘自严的书:

//线性表的动态分配顺序存储结构
#define list_init_size 100 //线性表存储空间的初始分配量
#define listincrement 10 //线性表存储空间的分配增量
typedef struct
{
elemtype *elem;  //存储空间基址
int length; //当前长度
int listsize; //当前分配的容量
}sqlist;

status initlist_sq(sqlist &L)
{
//构造一个空的线性表
L.elem=(elemtype*)malloc(list_init_size*sizeof(elemtype));
if(!L.elem)exit(overflow);//存储分配失败
L.length=0;   //空表长度为0
L.listsize=list_init_size //初始化容量
return OK;
}
//initlist_sq

插入运算

status listinsert_sq(sqlist &L ,int i,Elemtype e)
{
if (i<1||i>L.length+1)return error;
if (L.length>=L.listsize
{ //当前空间已满,增加分配
newbase=(elemtype*)realloc(L.elem,(L.listsize+listincrement)*size(elemtype));
if(!newbase)exit(overflow);
L.elem=newbase;
L.listsize+=listincrement;
}
iq=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}

问题:
(1)L.elem=(elemtype*)malloc(list_init_size*sizeof(elemtype));此句什么意思?
搜索更多相关主题的帖子: 数据 
2009-10-24 20:50
快速回复:严的书就是看不懂
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031405 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved