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

C++constructor…该如何解决

2012-08-27 
C++constructor……本来想写个双向链表的,,不小心写成了一个简单单向的。。。问题就是,当编译到input函数里的“o

C++constructor……

本来想写个双向链表的,,不小心写成了一个简单单向的。。。
问题就是,当编译到input函数里的“output_();”语句时就报了以下错误,求指教,,谢谢!
error:expected constructor,destructor,or type conversion before';'token
[code=C/C++][/code]
#include<cstdio>
#include<cstdlib>
using namespace std;

int n;
struct ddl{
  int info;
  char sex;
  struct ddl *next;
}stu;
struct ddl *head,*rear;
void build_ddl(){
  struct ddl *p1=NULL,*p2;
  int i=0;
  for(i=0;i<100;i++){
  p1=(struct ddl *)malloc(sizeof(struct ddl));
  if(!p1){printf("dynamic ditribution of memo failed!\n");break;}
  if(!i)head=p1;
  if(i)p2->next=p1;
  p2=p1;
  }
  rear=p2;
  rear->next=NULL;
}
void output_(){
  struct ddl *p=head;
  int i;
  for(i=1;i<=n;i++){
  printf("number %d students' info: %d %c\n",i,p->info,p->sex);
  p=p->next;
  }
}
void input(){
  int i;
  struct ddl *p;
  printf("input number of students,students' info: ID and sex:\n");
  scanf("%d",&n);
  for(i=0;i<n;i++)
  scanf("%d %c",&p->info,&p->sex);
  p=p->next;
  }
  output_();//这里报错
}
void insert_afteri_pos(){
  int i;
  struct ddl *p=NULL;
  printf("please input the position(i<=n),info and sex:\n");
  scanf("%d",&i);
  if(i<0||i>n){
  printf("invlalid input!please input again:\n");
  insert_afteri_pos();
  }
  else{
  p=malloc(sizeof(struct stu));
  if(!p){
  printf("insert data failed!\n");
  return ;
  }
  if(i==0){
  p->next=head;
  head=p;
  }
  else if(i<n){
  struct *p1=head;
  for(int j=1;j<i;j++) p1=p1->next;
  p->next=p1->next;
  p1->next=p;
  }
  else if(i==n){
  struct stu *p1=rear;
  rear->next=p;
  p->next=NULL;
  }
  scanf("%d %c",&p->info,&p->sex);
  n++;
  output_();
  }
}
void delete_y(){
  int i,j;
  struct stu *p=head;
  printf("please input the ID of student:\n");
  scanf("%d",&i);
  while(p-info!=i)p=p->next;
  if(p==rear&&(i!=p->info))printf("no such student!");
  else{
  if(p==head){
  head=head->next;
  free(p);
  }
  else if(p==rear){
  p=head;
  while(p->next!=rear)p=p->next;
  p->next=NULL;
  free(rear);
  rear=p;
  }
  else{
  struct stu *p1=head;
  while(p1->next!=p)p1=p1->next;
  p1->next=p->next;
  free(p);
  }
  }


  n--;
  output_();
}
void free_ddl(){
  free(head);
}
int main(){
  build_ddl();
  input();
  insert_afteri_pos();
  delete_y();
  free_ddl();
  return 0;
}


[解决办法]
}
output_();//这里报错 多了{


stu不是类型 ddl才是结构类型 好多用了stu来声明
[解决办法]

C/C++ code
  for(i=0;i<n;i++) //这里少了个{  scanf("%d %c",&p->info,&p->sex);  p=p->next;  }
[解决办法]
C/C++ code
void input(){  int i;  struct ddl *p;  printf("input number of students,students' info: ID and sex:\n");  scanf("%d",&n);  for(i=0;i<n;i++)  scanf("%d %c",&p->info,&p->sex);  p=p->next;  }//这里的多了个},你再修改一下  output_();//这里报错} 

热点排行