首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小白!一运行这个函数就什么都不显示!

2012-03-09 
小白求助!!一运行这个函数就什么都不显示!!一调用studentlen函数运行就啥搜不显示代码如下:[codeC/C++][/

小白求助!!一运行这个函数就什么都不显示!!
一调用studentlen函数运行就啥搜不显示
代码如下:[code=C/C++][/code]
#include <cstdlib>
#include <iostream>

using namespace std;

struct information//基本信息 
{
  char num[20]; //学号 
  char name[20];// 姓名 
  char classes[20];//班级 
};



typedef struct linknode//定义节点类型 
{
  struct information in;//基本信息
  struct linknode* next;//指向下一个节点的指针 
}nodetype;

class student//定义学生类 
{
  private:
  nodetype* head;//链表头指针 
  public:
  nodetype* creatstudent (int);//创建链表 
  int studentlen();//返回链表长度 
   
};

nodetype* student::creatstudent (int n)//创建链表
{
  nodetype* h=NULL,*s,*t;//定义指针 
  for(int i=1;i<n;i++)
  {
  if(i==1)//创建第一个节点 
  {
  h=(nodetype*)malloc(sizeof(nodetype));//分配空间 
  h->next=NULL;
  t=h;
  }
  else//创建其他节点 
  {
  s=(nodetype*)malloc(sizeof(nodetype));//分配空间
  s->next=NULL;//将新节点加入链表 
  t->next=s;
  t=s;
  }
  i++;
  }
  head = h;
  return h;//返回头指针 


int student::studentlen()//返回链表长度 
{
  int i = 0;
  nodetype * h = head;
  while(h!=NULL);//若链表没有结束 
  {
  h=h->next;
  i++;//节点累加 
  }
  return i;//返回长度 
}


int main(int argc, char *argv[])
{
  student stu;
  stu.creatstudent (4);
  cout<<"链表"<<stu.studentlen()<<endl;
  system("PAUSE");
  return EXIT_SUCCESS;
}


[解决办法]
问题出在 studentlen函数 while语句后多加了个分号;
而且nodetype* creatstudent (int);//创建链表 函数里面对i++操作进行了两次.
[解决办法]
首先是创建链表函数里面:for循环里的i++和最后的i++重复了,
再次i应该从0开始而不是从1,否则循环次数是n-1:
for(int i=1;i<n;i++)
{
if(i==1)//创建第一个节点
......
i++;
}
最后还有这个while后面的分号会导致死循环:
while(h!=NULL);//若链表没有结束

热点排行