设计一个散列函数,用它存储二维点的坐标。这是我们的C语言编程作业,我写了如下代码,但是有BUG:

设计一个散列函数,用它存储二维点的坐标。这是我们的C语言编程作业,我写了如下代码,但是有BUG:,第1张

这个已经帮你改了,你可以运行一下
# include <stdioh>
# include <malloch>
# include <stringh>
#define NHASH 31
typedef struct zuobiao
{
int x;
int y;
struct zuobiao next; //chain
}Nameval;
//函数声明
Nameval create();
Nameval srt(Nameval head,Nameval t);
void main(void)
{
Nameval sym,head;
head=create();
//print(head);
sym=(struct zuobiao)malloc(sizeof(struct zuobiao));
printf("请输入要查找的坐标值:\nx = ");
scanf("%d", &sym->x);
printf("y = "); scanf("%d", &sym->y);
srt(head,sym);
}
///////////////////////////////////////////////////////////////
Nameval create()
{
Nameval head,tail,p;int x;
head= tail=NULL;
printf("请输入坐标点的个数:");
scanf("%d",&x);
while(x>0)
{
p=(struct zuobiao)malloc(sizeof(struct zuobiao));
printf("请输入坐标的值:\nx = ");
scanf("%d", &p->x);
printf("y = "); scanf("%d", &p->y);

//p->age=x;
p->next=NULL;
if(head==NULL)
{
head=tail=p;
}
else
{
tail->next=p;
tail=p;
}
x--;
}

return(head);
}
//////////////////////////////////////////////////////////////////
Nameval srt(Nameval head,Nameval t)
{
Nameval p,q;
p=(Nameval )malloc(sizeof(Nameval));
p=head;
if(p==NULL) return NULL;
while(((p->x!=t->x)||(p->y!=t->y))&&(p->next!=NULL))
{
q=p;
p=p->next;
}
if((p->x==t->x)&&(p->y==t->y))
{
printf("已经有了这个坐标\n");
}
else if((p->next==NULL)&&(p->x!=t->x))
{

p->next=t;
t->next=NULL;
printf("新坐标已经插入\n");

}
//free(p);
return head;
}
可以推荐你加QQ群218691837

fourier这个函数在后面就取消不用了,只有老版本的matlab还能使用,当然也不是不能用,现在的FOURIER函数要求输入是sym型才能用,help
fourier会显示未定义的函数,需要help
sym/fourier才能看到用法,现在多用fft函数吧

sym的数字转化为 char型 x = sym('2sqrt(5) + pi') % sym型的数字 s = num2str(double(x)) % 将sym型的数字转化为char型 matlab中 syms类型的转换 matlab中的 sym数据类型转换为 double型 >> root=solve('x^2+5x-10') root = -5/2+1/265^(1/2) -5/2-1/265^(1/2) >> class(root) ans = sym >> root=double(root) root = 15311 -65311 >> class(root) ans = double
查看更多


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13386020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存