64,281
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class Book
{
public :
Book()
{
sum++;
}
~Book()
{
sum -= 1;
}
//静态成员函数,返回总数
static int GetSum()
{
return sum;
}
Book *next;
private :
static int sum; //静态数据成员,记录总数
} ;
//从表尾插入结点
void store(Book*& f, Book*& r, int w)
{
Book *p = new Book[w];
r = p + w - 1;
if(f == NULL)
{
f = p;
}
for(int i=0; i<w; i++)
{
p -> next = p+1 ;
p++;
}
r->next = NULL;
}
//售出货物,从表头删除结点
void borrow(Book * & f ,Book * & r,int w )
{
if ( f == NULL )
{
cout << "No any Book!\n" ;
return ;
}
Book* q;
for(int i=0; i<w; i++)
{
q = f;
f = f -> next ;
delete q; // 这句失败了,貌似陷入了死循环,但CPu占有率并不升高??
}
cout << "borrowed.\n" ;
}
int Book::sum = 0;
int main()
{
Book * front = NULL ,* rear = NULL ;
int w ;
int choice;
do
{
cout << "Please choice:\n" ;
cout << "Key of 1 is to store,\nKey of 2 is to borrow,\nKey of 0 is over.\n" ;
cin >> choice ;
switch ( choice ) // 操作选择
{
case 1 :
{
cout << "Input number of book(s): " ;
cin >> w ;
store( front, rear, w ) ;
break ;
}
case 2 :
{
cout << "Input number of book(s) : " ;
cin >> w ;
borrow( front, rear ,w) ;
break ;
}
case 0 : // 键入0,结束
break ;
}
cout << "Now sum is:" << Book::GetSum() <<"\n-------------------------"<< endl ;
}
while( choice ) ;
return 0;
}
//从表尾插入结点
void store(Book*& f, Book*& r, int w)
{
for(int i = 0; i < w; i ++)
{
Book *p = new Book;
if(f == NULL)
{
r = f = p;
}
r = r->next = p;
}
}