weixin_45490561 2021-02-08 15:35 采纳率: 0%
浏览 15

请问为什么删除链表中一个值的函数不能正确输出?

#include<stdio.h>
#include<stdlib.h>
typedef struct list{
	int *data;
	int length,maxsize;
}list;
chushihua(list &l){
	l.data=(int*)malloc(sizeof(int*)*20);
	l.maxsize=20;
	l.length=0;
}
void print(list l){
	int i=0;
	while(i<l.length){
		printf("第[%d]个值是%d\n",i+1,l.data[i]);
		i=i+1;
	}
}
void timu(list &l,int x){
	int k=0;//删除链表中等于x的值 
	for(int i=0;i<l.length;i++){
		if(l.data[i]!=x){
			l.data[k]=l.data[i];
			k++;
		}
		l.length=k;
	}
	printf("%d",l.length);	
} 
void chuangjian(list &l){
	int i=0;
	for(i=0;i<l.maxsize;i++){
		l.data[i]=i;
		l.length++;
	}
}
int main(){
	list l;
	chushihua(l);
	chuangjian(l);
	print(l);
	timu(l,5);
	printf("-----------------------------------\n"); 
	print(l);	
	return 0;
}
  • 写回答

3条回答 默认 最新

  • 帅哥强001 2021-02-08 18:16
    关注

    这样不对,不能一边赋值,一边用它判断大小,要有一个中间值例如:

    void timu(list &l,int x){

        int k=0;//删除链表中等于x的值
        int len = 0;
        for(int i=0;i<l.length;i++){

            if(l.data[i]!=x){

                l.data[k]=l.data[i];

                k++;

            }

            len=k;

        }
        l.length = len;
        printf("%d\n",l.length);    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图