ZBLOG

将此代码修改为使用单链表实现:#ifndef NULL #define NULL 0 #endif #include #include #include using namespace std; struct LNode { //存储数据 int month; int day; string name; double price; LNode* next;//后继指针 LNode() {}; LNode(int a, ...

下面是使用单链表实现的修改后的代码:

”`cpp #ifndef NULL #define NULL 0 #endif #include #include #include using namespace std;

struct LNode {

//存储数据
int month;
int day;
string name;
double price;
LNode* next;//后继指针

LNode() {};
LNode(int a, int b, string c, double d, LNode* n = NULL) :month(a), day(b), name(c), price(d), next(n) {};

};

class List { public:

int _size;
LNode* head;

void init()
{
	head = new LNode;
	head->next = NULL;
	_size = 0;
}

List()
{
    init();
}//构造函数

~List()//析构函数
{
    LNode* p = head->next; 
    while (p)
    {
        head->next = p->next; 
        delete p; 
        p = head->next; 
    }
    delete head; 
    head = nullptr; 
    _size = 0;       
}

//头插法
void insert(int& a, int& b, string& c, double& d)
{
    _size++;
    LNode* p = new LNode(a, b, c, d);
    p->next = head->next;
    head->next = p;

    /* 另一种写法:
    LNode* p = new LNode(a, b, c, d, head->next);
    head->next= p;*/

}

//在指定位置插入元素 void insert(int index,int a,int b,string c,double d) {

   if(index<=0 || index>_size+1)
       return;

   _size++;

   LNode* p = head;
   for(int i=0;i<index-1;i++)
   {
       p=p->next;
   }

   LNode* tmp=new LNode(a,b,c,d);
   tmp->next=p->next;
   p->next=tmp;

}

void print_L() {

    LNode* p = head->next;
    while(p!=NULL)
    {
        cout<<p->month<<" "<<p->day<<" ";
        p=p->next;
    }
    cout<<endl;
}

int located(int a, int b)
{
    LNode* p = head->next;
    int e = 1;

    if (p == NULL)
	    return e;

    while (p != NULL)
    {
	    if (a < p->month)
	    {
		    e++;
		    p = p->next;

		    if (p == NULL)
			    return e; 
	    }
	    else if (a > p->month)
		    return e; 
	    else if (a == p->month) 
	    {
		    if (b < p->day) 
		    {
			    e++;
			    p = p->next;

			    if (p == NULL)
				    return e; 
		    }
		    else if (b > p->day) 
			    return e; 
		    else if (b == p->day) 
			    return e; 
	     }
     }
}

};

int main() {

int m, n;
string str, c;
double d;

List L1;

double ave1 = 0, ave2 = 0;

cin >> m >> n;

for (int i = 0; i < m; i++)
{
	cin >> str >> c >> d;
	int a = stoi(str, 0, 10);

	if (a >= 10)
		str.erase(0, 3);
	else
		str.erase(0, 2);

	int b = stoi(str, 0, 10);

	int e = L1.located(a, b);
	L1.insert(e, a, b, c, d);
}

double sum1 = 0;
int count1 = 0;

double sum2 = 0;
int count2 = 0;

LNode* p = L1.head->next;

for (int i = 0; i < m; i++)
{
	if (count1 >= n)
	    break;

	else
	{
		if (p->name == "keyboard")
		{
			sum1 += p->price;
			p = p->next;
			count1++;
		}
		else if (p->next != NULL)
			p = p->next;
    }
}

LNode* s= L1.head->next;

for (int i = 0; i < m; i++)
{
    if(count2>=n)
        break;

    else
    {
        if(s->name=="mouse")
        {
            sum2+=s->price;
            s=s->next;
            count2++;
        }

        else if(s->next!=NULL)
            s=s->next;
    }
}

cout << fixed << setprecision(1) << sum1 / n << endl;
cout << fixed << setprecision(1) << sum2 / n << endl;

return 0;

} “`


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9438

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?