大哥大姐们,看看这个顺寻表错在哪里了,调式通过了,得不到结果?

浮生如梦VIP 2011-09-17 08:29:17
这个顺序表的程序,我已经调式通过了,但是却数不出结果,感觉是不是n=l.length出错,如果是
不清楚错到哪里了?如果不是,那是错在哪里了?
#include <stdio.h>
#include <stdlib.h>
#define listbegine 100
#define listincrease 10

typedef struct list
{
int *elem;
int length;
int listsize;

}la;
la l;
int creat()//建立一个空的线性表。
{

l.elem=(int *)malloc(sizeof(int));
if(!l.elem)
return -2;
l.length=0;
l.listsize=listbegine;
return 1;

}

int delet(int e)
{
int *p,i,j;
p=l.elem;
for(i=0;*(p+i)!=e&&i<l.length;i++);

for(j=i+1;j<l.length;j++)
*(p+j-1)=*(p+j);
--l.length;

return 1;

}

int insert(int i,int m)
{
int *p,*newbase,j;
if(i<1||i>l.length)
return -1;
newbase=(int *)realloc(l.elem,(l.listsize+listincrease)*sizeof(int));
if(!newbase)
exit (-2);
l.elem=newbase;
p=l.elem;
for(j=l.length;j>i;j--)
*(p+j+1)=*(p+j);
*(p+i)=m;
++l.length;
return 1;





}

void display()
{
int i,n;
n=l.length;
for(i=0;i<n;i++)
printf(" %d",l.elem[i]);
printf("\n");

}

void main()
{
int n,i,e,m;
creat();
printf("请输入线性表的个数n并输入相应的数值\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&l.elem[i]);//易错点。
display();
printf("请输入删除的元素e的值\n");
scanf("%d",&e);
delet(e);
display();
printf("请输入插入的位置i和插入的值m\n");
scanf("%d%d",&i,&m);
insert(i,m);
display();







}
...全文
127 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
querdaizhi 2011-09-17
  • 打赏
  • 举报
回复


#include <stdio.h>
#include <stdlib.h>
#define listbegine 100
#define listincrease 10

typedef struct list
{
int *elem;
int length;
int listsize;

}la;
la l;
int creat()//建立一个空的线性表。
{

l.elem=(int *)malloc(listbegine*sizeof(int));
if(!l.elem)
return -2;
l.length=0;
l.listsize=listbegine;
return 1;

}

int delet(int e)
{
int *p,i,j;
p=l.elem;
for(i=0;*(p+i)!=e&&i<l.length;i++);

for(j=i+1;j<l.length;j++)
*(p+j-1)=*(p+j);
--l.length;

return 1;

}

int insert(int i,int m)
{
int *p,*newbase,j;
if(i<1||i>l.length)
return -1;
newbase=(int *)realloc(l.elem,(l.listsize+listincrease)*sizeof(int));
if(!newbase)
exit (-2);
l.elem=newbase;
p=l.elem;
for(j=l.length;j>i;j--)
*(p+j+1)=*(p+j);
*(p+i)=m;
++l.length;
return 1;





}

void display()
{
int i,n;
n=l.length;
for(i=0;i<n;i++)
printf(" %d",l.elem[i]);
printf("\n");

}

void main()
{
int n,i,e,m;
creat();
printf("请输入线性表的个数n并输入相应的数值\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&l.elem[i]);//易错点。
l.length++;
}
display();
printf("请输入删除的元素e的值\n");
scanf("%d",&e);
delet(e);
display();
printf("请输入插入的位置i和插入的值m\n");
scanf("%d%d",&i,&m);
insert(i,m);
display();

}



改好了,LZ是大二刚学数据结构的孩纸么?
querdaizhi 2011-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ol_lo 的回复:]

第一次for时,没有修改length
lx继续
[/Quote]


++
querdaizhi 2011-09-17
  • 打赏
  • 举报
回复


l.elem=(int *)malloc(sizeof(int));


就申请了一个int的空间.....
breamn 2011-09-17
  • 打赏
  • 举报
回复
int insert(int i,int m)
这个函数出错了,自己再看看吧,不难发现错在哪里的,
modicum_lf 2011-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ol_lo 的回复:]
第一次for时,没有修改length
lx继续
[/Quote]

++

不解之榬 2011-09-17
  • 打赏
  • 举报
回复
同意一楼,就是因为length没有修改,所以没有输出
可借鉴如下:
	for(i=0;i<n;i++,l.length = i)
scanf("%d",&l.elem[i]);//易错点。
大IP 2011-09-17
  • 打赏
  • 举报
回复
结构体中的长度信息应该是所有节点的共有信息,最好定义为静态的变量。要不然,每个节点都有一个自己的值,运算中极容易出问题。
Ol_lO 2011-09-17
  • 打赏
  • 举报
回复
第一次for时,没有修改length
lx继续
内容概要:本文档详细介绍了PlatforMax单机版5.0.1-rc6版本的完整安装流程,涵盖硬件、操作系统、硬盘、网络等前置环境要求,并提供了Ubuntu 20.04.3 Desktop与Server两种系统的安装步骤。重点强调系统需全新安装、禁用自动更新、正确设置磁盘分区以充分利用全部空间,以及创建指定用户名“amax”。随后指导用户通过运行离线安装包完成PlatforMax的部署,包括校验、解压、输入安装码、驱动与Docker配置等环节。安装完成后需通过浏览器访问初始化页面完成最终配置。文档还列举了常见问题及应对措施,特别是NVIDIA驱动不兼容时的处理方式,允许用户手动提供驱动或跳过安装以确保主程序顺利部署。; 适合人群:具备Linux系统操作基础,从事AI平台运维、系统集成或技术支持的相关技术人员,尤其适用于负责本地化部署高性能计算平台的工程师。; 使用场景及目标:①为满足AI训练与推理需求的企业级用户提供PlatforMax平台的本地单机部署方案;②指导技术人员完成从系统准备到平台上线的全流程安装,确保环境合规、数据安全和系统稳定运行;③解决新GPU驱动兼容性等问题,保障平台可扩展性和实用性。; 阅读建议:在实际操作前通读全文,重点关注硬件配置、磁盘管理、用户命名规则及驱动处理策略,建议在测试环境中先行演练,避免因误操作导致数据丢失或安装失败。

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧