怎末不输出PK结果呢
怎末更改
#include
#include
using namespace std;
class Songer{
private:
char name[20];
long long fans_count;
const int count;
public:
Songer(){
strcpy(name,"");
fans_count=0;
count=3;
}
songer(const Songer&song){
strcpy(name,song.name);
fans_count=song.fans_count;
count=song.count;
}
void read(){
gets(name);
int fans;
cin>>fans;
fans_count=fans;
}
void Set(int num){
fans_count=num;
}
~Songer(){
cout<<"执行析构函数"<int show_count(){
return count;
}
friend void PK(Songer &a,Songer &b);
};
void PK(Songer &a,Songer &b){
if(a.fans_count>b.fans_count){
cout<"战胜"<if(a.fans_count=a.fans_count){
cout<"和"<"是平局"<if(b.fans_count"战胜"<int main(){
Songer num1,num2,num3;
num1.read(),num2.read(),num3.read();
num1.show_count();
PK(num1,num2);
PK(num2,num3);
PK(num3,num1);
return 0;
}
首先,是a和b比,你两边都是a了,其次==不是=
void PK(Songer &a,Songer &b){
if(a.fans_count>b.fans_count){
cout<<a.name<<"战胜"<<b.name<<endl;
}
if(a.fans_count==b.fans_count){
cout<<a.name<<"和"<<b.name<<"是平局"<<endl;
}
if(b.fans_count<b.fans_count){
cout<<b.name<<"战胜"<<a.name<<endl;
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:我们最后的环节是效率PK,我们发现无论是单链表插入还是删除算法,它们其实都是由两个部分组成:第一部分就是遍历查找第i个元素,第二部分就是实现插入和删除元素。
从整个算法来说,我们很容易可以推出它们的时间复杂度都是O(n)。
再详细点分析:如果在我们不知道第i个元素的指针位置,单链表数据结构在插入和删除操作上,与线性表的顺序存储结构是没有太大优势的。
但如果,我们希望从第i个位置开始,插入连续10个元素,对于顺序存储结构意味着,每一次插入都需要移动n-i个位置,所以每次都是O(n)。
而单链表,我们只需要在第一次时,找到第i个位置的指针,此时为O(n),接下来只是简单地通过赋值移动指针而已,时间复杂度都是O(1)。
显然,对于插入或删除数据越频繁的操作,单链表的效率优势就越是明显啦~