标题:发现一个奇怪的问题,大家帮忙看一下
只看楼主
低调求学
Rank: 2
等 级:论坛游民
帖 子:51
专家分:33
注 册:2012-5-9
结帖率:64.29%
已结贴  问题点数:20 回复次数:3 
发现一个奇怪的问题,大家帮忙看一下
/*链表创建*/
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef struct node{
   int number;
   struct node *next;
}node;

void create(node *&head){
    node* p;
    for(int i =0;i<10;i++){
      node *temp = (node *)malloc(sizeof(node));
      if(!temp)
      exit(0);
      temp->number = i;
      temp->next = NULL;
      if(head == NULL){
        p = head = temp;        
      }      
      else{
         temp->next = p;//如果把这里换成p->next = temp,即是换成链表尾插入法,就会出现问题,这是为什么呢??
         p = temp;   
      }/**/
    }
}
int main(){
    node *head;
    create(head);
    return 0;
}
搜索更多相关主题的帖子: create number include next 
2012-10-31 09:31
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3450
专家分:19340
注 册:2012-3-31
得分:5 
看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-10-31 10:11
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
得分:15 
程序代码:
if(head == NULL)//在LZ的程序中,这一步不会执行,即是说p与head在开始时是没有空间的....
       {
        p = head = temp;        
       }       
      else{
         p->next=temp;//如果采用尾插法,那么p指针就应该有自己的空间,
                      //而LZ的程序中p并没有空间,那何乃p->next呢
         p = temp;    
      }/**/
    }
}
int main(){
    node *head=NULL;//这里修改一下 就OK
    create(head);
    return 0;
}


[ 本帖最后由 爱闹的娃 于 2012-10-31 10:33 编辑 ]
2012-10-31 10:32
低调求学
Rank: 2
等 级:论坛游民
帖 子:51
专家分:33
注 册:2012-5-9
得分:0 
回复 3楼 爱闹的娃
犯了个低级错误,我以为声明一个指针会自动初始化为空,哎,看来没有初始化后果是很严重的啊,以后多注意了!!
2012-10-31 11:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-385200-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.334799 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved