求大神帮忙

呜呼qq 2016-05-15 08:35:05
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct node
{
int a[10];
int length;
}SeqList,*PSeqList;
PSeqList PL;

void Delete(PSeqList PL,int x,int y)
{



int j=0;
int i;
for(i=0;i<PL->length;i++)
if(PL->a[i]>x&&PL->a[i]<y)
j++;
else
PL->a[i-j]=PL->a[i];
PL->length=PL->length-j;
}

void main()
{
int k;
PSeqList PL;
int a[10]={2,4,3,67,35,89,233,23232,2332,23323};


PL=(PSeqList)malloc(sizeof(SeqList));

Delete(PL,PL->a[0],PL->a[3]);

for(k=0;k<PL->length;k++)
{
printf("%d ",PL->a[k]);
}

}
为什么运行结果什么都没有?
...全文
87 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 版主 2016-05-16
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
LubinLew 2016-05-15
  • 打赏
  • 举报
回复
指针操作完全不对

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct node {
	int a[10];
	int length;
}SeqList, *PSeqList;

void Delete(PSeqList PL, int x, int y)
{
	int i, j=0;

	for(i=0; i< PL->length; i++)
	{
		if (PL->a[i]>x && PL->a[i]<y) 
		{
			j++;
//			printf("found match a[%d]=%d, j=%d\n", i, PL->a[i], j);
		}
		else
		{
			int count = PL->length-i-1; //printf("count=%d\n", count);
			PL->length--;
			if (count > 0) {
				memmove(&PL->a[i], &PL->a[i+1], sizeof(int)*count);
				i--;
			}
		}
	}
}

int main(void)
{
	int k;
	PSeqList PL;
	int a[10] = {2,4,3,67,35,89,233,23232,2332,23323}; 
	
	PL=(PSeqList)malloc(sizeof(SeqList));
	memcpy(PL->a, a, sizeof(a));
	PL->length = 10;
	
	Delete(PL, PL->a[0], PL->a[3]);
	
	for(k = 0; k < PL->length; k++)
	{
		printf("%d  ",PL->a[k]);
	}
}

69,381

社区成员

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

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