| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 571 人关注过本帖
标题:我怀疑书上印错了,帮忙看看
只看楼主 加入收藏
vinci
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-12-4
收藏
 问题点数:0 回复次数:5 
我怀疑书上印错了,帮忙看看

书上事这么写的:

插入算法描述如下:

int insertqlist(int i, ET x, ET s[], int *np)

{/*在顺序表第i个结点之前插入一个新结点x,顺序表用一维数组s实现,*np是指向存放表长变量n的指针变量,*/

int j, n;

n=*np;

if((i<1) || (i>n+1))

return(0);

else

{

for(j=n;j>=i;j--)

s[j]=s[j-1];

s[j]=x;

*np=++n;

return(1);

}

}

我的理解:

如果n是10,i是9 在执行

for(j=n;j>=i;j--)

s[j]=s[j-1];

当j=10,i=9,时执行s[10]=s[9];

我的问题是s[10]的植那去了?

还说读者不难写出在第i个结点之后插入结点的算法。

我想了好久也没想到5555.......

谢谢!!

搜索更多相关主题的帖子: return 
2004-12-24 12:42
vinci
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-12-4
收藏
得分:0 

第二页也有毛病

int delsqlist (in i,ETs[], int *np)

{/*删除线性表中第i个结点,顺序表用一维数组s实现,*np是指向存放表长变量n的指针变量,*/

int j,n;

n=*np;

if (i<1 || i>n)

return (0);

else

{

for(j=i;j<n;j++)

s[j-1]=s[j];

*np=--n;

return(1);

}

}

我得想法:

s[2-1]=s[2];

那s[2]的值没删倒是把s[1]的值删了!!


2004-12-24 13:01
aniude
Rank: 2
等 级:新手上路
威 望:3
帖 子:231
专家分:0
注 册:2004-11-3
收藏
得分:0 

你是怎么想的// 删除和插入元素都是这样的啦;删除就是删除第i个元素之后的元素左移,你可以理解为后一个的值替换掉前一个元素的值,而插入的话就是第i个元素之后的元素右移,前一个的值替换后一个的值。 不妥之处希望大家指出,谢谢


2004-12-24 17:04
vinci
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-12-4
收藏
得分:0 

"删除就是删除第i个元素之后的元素左移"

举个例子,s[2-1]=s[2];我想删2结果删1了,我想不通。。。。。

插入您说得没错,可是都右移了那最后一个去哪了呢?被挤没了?

谢谢~~~~


2004-12-24 19:10
aniude
Rank: 2
等 级:新手上路
威 望:3
帖 子:231
专家分:0
注 册:2004-11-3
收藏
得分:0 
不是,是值的替换。例如在第i个位置插入一个元素,那么后面的a[i] to a[n]就右移,那相当于原来的a[i] to a[n]的值等于移动后a[i+1] to a[n+1]的值,那么把a[i]的值传给a[i+1]就相当与元素的右移吧?

2004-12-24 19:47
vinci
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-12-4
收藏
得分:0 

哦是这样嘿嘿,我想多了

那删除呢?感觉没删呀?


2004-12-24 20:17
快速回复:我怀疑书上印错了,帮忙看看
数据加载中...
 
   



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

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