求大神穿错马甲了帮忙,看看我这是错哪里了?我的目的是每次调用函数都可以继续上一段链式表的结点,求大家帮忙看看

12:01 提问
高分悬赏,求求大神帮忙解答一下,快崩溃了
代码编译连接都ok,运行半天最后报错 ,就是调用 计算数乘nP的函数Point_Multiply 时就卡住了,单步跟踪到这就执行不下去了。
调试怀疑是内存溢出,水平有限,希望大神们帮帮我
Point Point_Calculate(Point P,Point Q) //点加和倍点加
BigInteger r,temp0(0),temp2(2),temp3(3);
if (Compare(P.x)&&Compare(P.y))
R=Q;return R;
else if (Compare(Q.x)&&Compare(Q.y))
R=P;return R;
else if (Compare(P.x,Q.x))
r=(Q.y-P.y)*Inv(Q.x-P.x,q)%q;
else if (Compare(P.y,Q.y))
R.x=R.y=temp0;return R;
else if (Compare(Q.y))
R.x=R.y=temp0;return R;
r=(temp3*P.x*P.x+a)*Inv(temp2*P.y,q)%q;
R.x=(r*r%q-P.x-Q.x)%q;
if (Compare(R.x,temp0)==-1)
R.x=R.x+q;
R.y=(r*(P.x-R.x)-P.y)%q;
if (Compare(R.y,temp0)==-1)
R.y=R.y+q;
//计算数乘nP,采用重复平方法计算
Point Point_Multiply(Point P,BigInteger n)
BigInteger temp,temp2(2),temp0(0);
int b[160],
result.x=result.y=temp0;//初始化为O点
n.BigNumToIndex(b,count);//得到n的二进制表示
//按重复平方法求解nP
for(int i=count-1;i&=0;i--)
result=Point_Calculate(result,result);
result=Point_Calculate(result,P);
//将大整数转化为二进制数,并不影响*this的值
void BigInteger::BigNumToIndex(int b[],int &count)
BigInteger BigNum=*this,temp2(2),
while (int(BigNum.Head-&Num))
temp=BigNum%temp2;
b[count++]=int(temp.Head-&Num);
BigNum=BigNum/temp2;
//大整数的定义
BigInteger::BigInteger()
//构造函数,将每个节点置空
Head=End=TempNode=NULL;
BigInteger::BigInteger(char i)
//构造函数,只拥有一位的大整数
Head=End=TempNode=NULL;
TempNode=new N
TempNode-&Num=i;
TempNode-&Prev=NULL;
Head=End=TempN
TempNode-&Next=NULL;
BigInteger::BigInteger(const BigInteger &BigNum)
//拷贝构造
Head=End=TempNode=NULL;
p=BigNum.H
AddEnd(p-&Num);
BigInteger::~BigInteger()
Node *NextN
if(Head==NULL)
TempNode=H
while(TempNode)
NextNode=TempNode-&N
delete TempN
TempNode=NextN
Head=NULL;
TempNode=NULL;
void BigInteger::AddHead(char Num)
//在链表头插入节点的操作
TempNode=new N
TempNode-&Num=N
TempNode-&Prev=NULL;
Head=End=TempN
TempNode-&Next=NULL;
TempNode-&Next=H
Head-&Prev=TempN
Head=TempN
void BigInteger::AddEnd(char Num)
//在链表尾插入节点的操作
TempNode=new N
TempNode-&Num=N
TempNode-&Next=NULL;
Head=End=TempN
TempNode-&Prev=NULL;
TempNode-&Prev=E
End-&Next=TempN
按赞数排序
是的 确实是内存溢出, BigInteger太啰嗦了,把4000c先给我,我问下我朋友,他是弄这一块的!!!
你的Point中的两个点的值的类型是BigInteger ?
你每次去做一些操作的时候都会使用point来保存你的值, 这样无形中就copy了多份
for(int i=count-1;i&=0;i--)
result=Point_Calculate(result,result); //这里就会copy count份 point的值, 而这时虽然是把值付给同一个对象result, 但是却new了多次,
//我觉得你应该将Point_Calculate的返回类型改为引用
result=Point_Calculate(result,P);
以上结论的前提是你的Point中的点是BigInteger类型.
不一定对, 可以参考一下.
如果怀疑是内存溢出的问题,你可以打开任务管理,看看内存的使用情况,运行一段时间,看看内存大小是否是只增不减~
哇,好多c币,可惜我C++忘得差不多了。。。。
代码不够全,可以发过来给你跑一下试试。
你可以查看一下在程序crash的时候,上下文中的参数值都是什么。打开core dump.
你把数据的存储在优化一下,或是全局变量都要用的话,就设置成static,不需要的话,用完之后直接进垃圾站
把出错的堆栈信息贴出来
这是的话多长时间才能赚到你的这单
10种Node对象缓存起来,每次直接取对应的数字,不需要每次去new 对象
大家看看我的问题好不好,不要只想着c币哪位大神可以看看 为什么我这个del()的函数是错?
&!DOCTYPE html&&html& &head&
&title& new document &/title&
&meta http-equiv="Content-Type" content="text/ charset=gbk"/&
&script type="text/javascript"&
window.onload = function()
var tr=document.getElementsByTagName('tr');
for(var i=0;i&tr.i++)
change(tr[i])
//页面初始化时,绑定鼠标事件
function change(obj){
obj.onmouseover=function(){
this.style.backgroundColor="#f2f2f2"
obj.onmouseout=function(){
this.style.backgroundColor="#fff"
//绑定鼠标事件的函数
function add(){
var table_tr=document.createElement("tr")
var td_num=document.createElement("td") //学号
var td_name=document.createElement("td") //姓名
var td_del=document.createElement("td") //删除按键
td_num.innerHTML="xh00"+num
td_name.innerHTML="王小明"
td_del.innerHTML="&a href="javascript:;" onclick="del(this)" &删除&/a&"
tab=document.getElementById("table")
tab.appendChild(table_tr) //创建tr标签
table_tr.appendChild(td_num) //创建第一个td标签
table_tr.appendChild(td_name)//创建第二个td标签
table_tr.appendChild(td_del)//创建第三个td标签
var tr=document.getElementsByTagName("tr") //再次绑定change()函数
for(var=0;i&tr.i++){
change(tr[i])
// 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;
function del(obj){
var table_tr=obj.parentNode.parentNode
table_tr.parentNode.removeChild(table_tr)
// 创建删除函数
&table border="1" width="50%" id="table"&
&th&学号&/th&
&th&姓名&/th&
&th&操作&/th&
&td&xh001&/td&
&td&王小明&/td&
&td&&a href="javascript:;" onclick="del(this)" &删除&/a&&/td&
&!--在删除按钮上添加点击事件
&td&xh002&/td&
&td&刘小芳&/td&
&td&&a href="javascript:;" onclick="del(this)" &删除&/a&&/td&
&!--在删除按钮上添加点击事件
&input type="button" value="添加一行"
&!--在添加按钮上添加点击事件
--& &/body&&/html&报错的时候就报了函数的错
写下你的评论...
写下你的评论...
Copyright (C)
All Rights Reserved | 京ICP备 号-2

我要回帖

更多关于 大神穿错马甲了txt 的文章

 

随机推荐