关于c++中函数的指针参数

macemers 2012-09-19 11:25:42
我有一个方法,主要是创建两个链表:


bool createCrossLink(node *longList,node *shortList,int crossNum){

if(crossNum<0 || crossNum>=LONG_LENGTH) return false;

node *temp;

for(int i=LONG_LENGTH-1;i>=0;i--){
node *lp = (node *)malloc(sizeof(node));
lp->value = i;
lp->next = longList->next;
longList->next = lp;
if(i==crossNum){
temp = lp;
}
}

for(int i=SHORT_LENGTH-1;i>=0;i--){
node *sp = (node *)malloc(sizeof(node));
sp->value = i*100;
sp->next = shortList->next;
shortList->next = sp;
if(i==0){
sp->next = temp;
}
}

return true;
}


但是在main中遍历这个链表,却发现没有创建。

void traverse(node *ptr){
if(ptr->next!=NULL){
cout<<ptr->value<<endl;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
node *longHead = (node *)malloc(sizeof(node));
node *shortHead = (node *)malloc(sizeof(node));
longHead->next = NULL;
shortHead->next = NULL;

if(createCrossLink(longHead,shortHead,3)){
traverse(longHead);
traverse(shortHead);
}

return 0;
}


请问如何解决?
...全文
83 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
macemers 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

问题主要是有两个:
1、没有往下走,比如p = p->next,这样长度总是为1;
2、直接修改参数,这样会导致指针乱指,而应该用临时指针作移动,比如node* p = shortList。
C/C++ code

void traverse(node *ptr)
{
node* p = ptr;
while(p->next != NULL)
{
……
[/Quote]

谢谢!
libinfei8848 2012-09-19
  • 打赏
  • 举报
回复
没有看到全部上下文,不知道你定义LONG_LENGTH是多少
图灵狗 2012-09-19
  • 打赏
  • 举报
回复
问题主要是有两个:
1、没有往下走,比如p = p->next,这样长度总是为1;
2、直接修改参数,这样会导致指针乱指,而应该用临时指针作移动,比如node* p = shortList。

void traverse(node *ptr)
{
node* p = ptr;
while(p->next != NULL)
{
cout << p->value << endl;
p = p->next;
}
}


node* p = shortList;
for(int i = SHORT_LENGTH - 1; i >= 0; i--)
{
node *sp = (node*)malloc(sizeof(node));
sp->value = i * 100;
sp->next = NULL;
p->next = sp;
p = p->next;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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