有谁能帮我把下面的C语言程序改成c++程序吗?

程序是这样的:
#include<stdio.h>
struct elem
{
int data;
elem *next;
};
void main()
{
int temp;
//head指向链表头元素。tail指向链表最后元素,tempP是个临时存放地址
//frontP指向即将删除元素的前一个元素,deleteP指向将要删除的元素
elem * head,*tail,*tempP,*frontP,*deleteP;
head=tail=NULL;
//读取信息
scanf("%d",&temp);
while(-1!=temp)
{
if(head==NULL)
{
tail=head=new elem;
head->data=temp;
head->next=NULL;
}
else
{
tempP=new elem;
tempP->data=temp;
tempP->next=NULL;
tail->next=tempP;
tail=tempP;
}
scanf("%d",&temp);
}
//删除偶数
tempP=head;
while(NULL!=tempP)
{
if(0==tempP->data%2)
{
if(tempP==head)
{
head=tempP->next;
}
else
{
//找到偶数的前一个数,该数的next指向偶数的next;
for(frontP=head;NULL!=frontP;++frontP)
{
if(frontP->next==tempP)
{
frontP->next=tempP->next;
break;
}
}
}
}
deleteP=tempP;
tempP=tempP->next;
if(0==deleteP->data%2)
delete deleteP;
}
//打印数据
tempP=head;
while(NULL!=tempP)
{
printf("%d\n",tempP->data);
deleteP=tempP;
tempP=tempP->next;
delete deleteP;
}
}

第1个回答  2016-05-19
你这能改也也只有输出的函数可以改了,但是改起来说简单也简单,说难也难.因为太多输出的了,工作量很大.你把#include换成#include没有.h然后在main函数前面加上usingnamespacestd;最后把所有printf改成cout<<,然后再把printf函数的那两个括号删除即可.如果要输出数字,如:printf("%d",12);那么需要把字符串截断,然后用<<连接即可,如:printf("\t\t|您一共玩了%d次|\n",win+lose+he);cout<<"\t\t|您一共玩了"<
第2个回答  2016-05-19
//C++程序:
#include<iostream>
using namespace std;
struct elem

 int data; 
 elem *next;
};
void main()
{
 int temp;//head指向链表头元素。tail指向链表最后元素,tempP是个临时存放地址
 //frontP指向即将删除元素的前一个元素,deleteP指向将要删除的元素
 elem * head,*tail,*tempP,*frontP,*deleteP; head=tail=NULL; //读取信息
 cin >> temp;
 while(-1!=temp) 
 {
  if(head==NULL)
  {  
   tail=head=new elem; 
   head->data=temp; 
   head->next=NULL; 
  } 
  else
  { 
   tempP=new elem; 
   tempP->data=temp;
   tempP->next=NULL;
   tail->next=tempP;
   tail=tempP; 
  } 
  cin >> temp;
 } //删除偶数
 tempP=head;
 while(NULL!=tempP)
 { 
  if(0==tempP->data%2) 
  {  
   if(tempP==head) 
   {  
    head=tempP->next;
   }  
   else 
   {  
    //找到偶数的前一个数,该数的next指向偶数的next;  
    for(frontP=head;NULL!=frontP;++frontP)  
    {  
     if(frontP->next==tempP) 
     {   
      frontP->next=tempP->next; 
      break;   
     }  
    }  
   }  
  } 
  deleteP=tempP; 
  tempP=tempP->next;
  if(0==deleteP->data%2) 
   delete deleteP;
 } //打印数据
 tempP=head;
 while(NULL!=tempP) 
 {  
  cout << tempP->data << endl; 
  deleteP=tempP; 
  tempP=tempP->next; 
  delete deleteP; 
 }
}

追问

不行啊,我自己也是这样子改的,但是输出会出现停止工作

追答

你用的什么编译器,我用的VC6不会出现这样的情况啊,完美运行!

追问

我用的devc++

然后提交到系统上的时候也说编译错误

系统上现在说格式错误。。。

追答

已经是C++了怎么还会格式错误呢?搞不懂了

追问

我也不懂,没事还是谢谢你啦😂

本回答被提问者采纳
相似回答