1.题目:
类型有:编号:ISBN
书名:name
价格:price
完成如下的功能:
①录入:从键盘输入(或从文件读入)图书(或学生)信息表的各个数据元素;
②查找:可按不同属性查找所有等于给定值的数据元素,找到并返回它们在表中的位序;
③插入:在表中第i(1=<i<=N+1)个位置插入一个新元素;
④删除:可删除表中第i(1=<i<=N)个位置上的元素;
⑤输出:依次打印表中的各个元素的值;
⑥排序:可按某属性对表中的元素进行排序。(可选)
3.实现方式:单链表(带头节点)
2.代码实现:
#include <iostream>
#include <string>
using namespace std;
struct Node
{
int ISBN;//编号
string name;//书名
float price;//定价
Node *next;
};
//操作类
class Link
{
private:
int number;//图书数量
Node *head;
public:
Link(int a):number(a){}
~Link(){delete head;}
void create_node();//创建
void select();//功能选择
int find_node(int i);//按照编号查找
int find_node(string n);//按照书名查找
int find_node(float p);//按照价格查找
int insert_node(int pos);//插入
int delete_node(int d);//删除
int mod_node(int d);//修改
void sort_node_ISBN();//按照编号排序
void sort_node_price();//按照价格排序
int get_node();//计数总数
void print();//打印操作
};
void Link::create_node()
{
Node *pnew;
head = new Node;
//cout<<"请按顺序输入图书的ISBN,书名,定价";
head->ISBN = 0;
head->name = 'n';
head->price = 0;
head->next = NULL;
Node *ptemp = head;
for(int i=0;i<number;i++)
{
pnew = new Node;
cout<<endl;
cout<<"请按顺序输入图书的ISBN,书名,定价:";
cin>>pnew->ISBN>>pnew->name>>pnew->price;
pnew->next = NULL;
ptemp->next = pnew;
ptemp = pnew;
}
}
//按编号查找
int Link::find_node(int i)
{
Node *ptemp = head->next;
for(int count = 0;count<number;count++)
{
if(ptemp->ISBN ==