我定义
typedef struct node{
      int ID;
      struct node *next;
}listnode;赋值语句:
  
  listnode *p;
  for( int i = 0; i < 10 ;i ++){
        p->ID = i;
        p = p->next
   } 编译通过,运行在p->ID = i;出错,为什么?

解决方案 »

  1.   

    listnode *p = new listnode;.........
    delete p;
    p = NULL;
      

  2.   

    还是出错,说内存不能为"writen"
      

  3.   


    分配内存  listnode *p;
      p=(listnode *)malloc(sizeof(listnode));  for( int i = 0; i < 10 ;i ++){
            p->ID = i;
            p = p->next
       }
      

  4.   

      listnode *p;
      p=(listnode *)malloc(sizeof(listnode));  for( int i = 0; i < 10 ;i ++){
            p->ID = i;
            p = p->next;
            p=(listnode *)malloc(sizeof(listnode));
       }   free(p);
      

  5.   

    现在是好了,那我怎么把链表按顺序打出来呢?
    int a[ 10 ];
    CString str;
    while( p ){
          a[ i ] = p->ID;
           p = p->next;
           i--;
           str.Format("数组a的%d的的值是%d",i,a[i]);
           m_list.AddString(str);
       }编译没错,执行说内部不能为"read"
      

  6.   

    应该这样:  listnode *p;
      p=(listnode *)malloc(sizeof(listnode));
      if (!p)
      {
    }
      for( int i = 0; i < 10 ;i ++){
            p->ID = i;
            p->next = (listnode *)malloc(sizeof(listnode));   }   free(p);  
      

  7.   

    应该这样:  listnode *p;
      p=(listnode *)malloc(sizeof(listnode));
      if (!p)
      {
         return;
      }
      for( int i = 0; i < 10 ;i ++){
            p->ID = i;
            p->next = (listnode *)malloc(sizeof(listnode));
            if (!p->next)
            {
               . . .
               return;
            }
            p = p->next;
       }   .
       .
       .