k2625 2015-06-16 15:22 采纳率: 0%
浏览 2588
已结题

这个c++程序如何换成c

#include
#include
using namespace std;
class Data
{
public:
Data();
Data(int i,string n,int b);
void SetId(int i);
void SetName(string n);
void SetBorrow(int b);
int GetId()const;
string GetName()const;
int GetBorrow()const;
private:
int id;
string name;
int borrow;
};
Data::Data()
{
id=0;
name="";
borrow=0;
}
Data::Data(int i,string n,int b)
{
id=i;
name=n;
borrow=b;
}
void Data::SetId(int i)
{
id=i;
}
void Data::SetName(string n)
{
name=n;
}
void Data::SetBorrow(int b)
{
borrow=b;
}
int Data::GetId()const
{
return id;
}
string Data::GetName()const
{
return name;
}
int Data::GetBorrow()const
{
return borrow;
}

class Node
{
public:
Node();
Node(Data d);
void SetData(Data *d);
Data
GetData()const;
void SetNext(Node n);
Node
GetNext()const;
private:
Data data;
Node *next;
};
Node::Node()
{
data=NULL;
next=NULL;
}
Node::Node(Data *d)
{
data=d;
next=NULL;
}
void Node::SetData(Data *d)
{
data=d;
}
Data
Node::GetData()const
{
return data;
}
void Node::SetNext(Node n)
{
next=n;
}
Node
Node::GetNext()const
{
return next;
}

class List
{
public:
List();
void Insert(int id);
void ShowMax()const;
void ShowMix()const;
void Show()const;
private:
Node *head;
Node *tail;
};
List::List()
{
head=NULL;
tail=NULL;
}
void List::Insert(int id)
{
int i,b;
string n;
cout<<"请输入编号:";
cin>>i;
cout<< "请输入书名:";
cin>>n;
cout<<"请输入借书次数:";
cin>>b;
Data *d=new Data(i,n,b);
Node *node=new Node(d);
if(!head)
{
head=node;
tail=node;
head->SetNext(NULL);
}
else
{
Node *now=head,*last=head;
while(now)
{
if(now->GetData()->GetId()==id)
break;
last=now;
now=now->GetNext();
}
if(now==head)
{
node->SetNext(head);
head=node;
}
else
{
last->SetNext(node);
node->SetNext(now);
}
}
}
void List::ShowMax()const
{
Node *node=head->GetNext(),*max=head;
while(node)
{
if(max->GetData()->GetId()GetData()->GetId())
max=node;
node=node->GetNext();
}
cout<<"借阅次数最多的图书信息如下:"< coutGetData()->GetId()<<"\t图名为:"<GetData()->GetName()<<"\t借阅次数为:"<GetData()->GetBorrow()< }
void List::ShowMix()const
{
Node *node=head->GetNext(),*mix=head;
while(node)
{
if(mix->GetData()->GetId()>node->GetData()->GetId())
mix=node;
node=node->GetNext();
}
cout<<"借阅次数最少的图书信息如下:"< coutGetData()->GetId()<<"\t图名为:"<GetData()->GetName()<<"\t借阅次数为:"<GetData()->GetBorrow()< }
void List::Show()const
{
Node *node=head;
cout while(node)
{
coutGetData()->GetId()<<"\t"<GetData()->GetName()<<"\t"<GetData()->GetBorrow()< node=node->GetNext();
}
}

void main()
{
List l=new List();
l->Insert(1);
l->Show();
l->Insert(2);
l->Show();
l->Insert(2);
l->Show();
l->ShowMix();
l->ShowMax();
}
/
说明:data类为数据类,保存图书的基本信息,node为结点类,保存结点的信息,list为链表类,执行各种链表操作*/

  • 写回答

12条回答 默认 最新

  • threenewbee 2015-06-16 15:24
    关注

    因为这个程序用了面向对象,要转换需要把类变成结构体,把成员函数变成普通函数,同时传一个指向实例结构体的this指针。
    修改起来工作量比较大。如果你就是要一个图书管理系统的课程作业,不如直接google另外找一个现成的。

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮