数据结构(c++)一元多项式的代数运算

来自:    更新日期:早些时候
高分 C++数据结构,一元多项式的相乘~

看我的:
#include "Polynomial.h"
#include
using namespace std;
void Polynomial::DestroyLink(Link &L)
{
Link p;
p=L->next;
while(p)
{
L->next=p->next;
delete p;
p=L->next;
}
delete L;
L=NULL;
}

//创建含有n个链表类型结点的项,即创建一个n项多项式
void Polynomial::CreateLink(Link &L,int n)
{
if(L!=NULL)
{
DestroyLink(L);
}
Link p,newp;
L=new LNode;
L->next=NULL;
(L->data).exp=-1;//创建头结点
p=L;
for(int i=1;i <=n;i++)
{
newp=new LNode;
cout <<"请输入第" <<i <<"项的系数和指数:" <<endl;
cout <<"系数:";
cin>>(newp->data).coef;

cout <<"指数:";
cin>>(newp->data).exp;
if(newp->data.exp <0)
{
cout <<"输入有误,指数不允许为负值!" <<endl;
delete newp;
i--;
continue;
}
newp->next=NULL;
p=L;
if(newp->data.coef==0)
{
cout <<"系数为零,请重新输入!" <<endl;
delete newp;
i--;
continue;
}
while((p->next!=NULL)&&((p->next->data).exp data).exp))
{
p=p->next; //p指向指数最小的那一个
}
newp->next=p->next;
p->next=newp;
}
}
/*输出链表*/
void Polynomial::PrintList(Link L)
{
Link p;

if(L==NULL||L->next==NULL)
cout <<"该一元多项式为空!" <<endl;
else
{
p=L->next;
//项的系数大于0的5种情况
if((p->data).coef>0)
{
if((p->data).exp==0)
cout data).coef;
else if((p->data).coef==1&&(p->data).exp==1)
cout <<"x";
else if((p->data).coef==1&&(p->data).exp!=1)
cout data).exp;
else if((p->data).exp==1&&(p->data).coef!=1)
cout data).coef <<"x";
else cout data).coef data).exp;
}
//项的系数小于0的5种情况
if((p->data).coef <0)
{
if((p->data).exp==0)
cout data).coef;
else if(p->data.coef==-1&&p->data.exp==1)
cout <<"-x";
else if(p->data.coef==-1&&p->data.exp!=1)
cout data.exp;
else if(p->data.exp==1)
cout data.coef <<"x";
else cout data).coef data).exp;
}
p=p->next;
while(p!=NULL)
{
if((p->data).coef>0)
{
if((p->data).exp==0)
cout data).coef;
else if((p->data).exp==1&&(p->data).coef!=1)
cout data).coef <<"x";
else if((p->data).exp==1&&(p->data).coef==1)
cout <<"+" <<"x";
else if((p->data).coef==1&&(p->data).exp!=1)
cout data).exp;
else cout data).coef data).exp;
}
if((p->data).coef <0)
{
if((p->data).exp==0)
cout data).coef;
else if(p->data.coef==-1&&p->data.exp==1)
cout <<"-x";
else if(p->data.coef==-1&&p->data.exp!=1)
cout data.exp;
else if(p->data.exp==1)
cout data.coef <<"x";
else cout data).coef data).exp;
}

p=p->next;
}
}
cout <<endl;
}

/*把一个链表的内容复制给另一个链表*/
void Polynomial::CopyLink(Link &pc,Link pa)
{
Link p,q,r;
pc=new LNode;
pc->next=NULL;
r=pc;
p=pa;
while(p->next!=NULL)
{
q=new LNode;
q->data.coef=p->next->data.coef;
q->data.exp=p->next->data.exp;
r->next=q;
q->next=NULL;
r=q;
p=p->next;
}
}

/*将两个一元多项式相加*/
void Polynomial::PolyAdd(Link &pc,Link pa,Link pb)
{
Link p1,p2,p,pd;
CopyLink(p1,pa);
CopyLink(p2,pb);
pc=new LNode;
pc->next=NULL;
p=pc;
p1=p1->next;
p2=p2->next;
while(p1!=NULL&&p2!=NULL)
{
if(p1->data.exp data.exp)
{
p->next=p1;
p=p->next;
p1=p1->next;
}
else if(p1->data.exp>p2->data.exp)
{
p->next=p2;
p=p->next;
p2=p2->next;
}
else
{
p1->data.coef=p1->data.coef+p2->data.coef;
if(p1->data.coef!=0)
{
p->next=p1;
p=p->next;
p1=p1->next;
p2=p2->next;
}
else
{
pd=p1;
p1=p1->next;
p2=p2->next;
delete pd;
}

}


}
if(p1!=NULL)
{
p->next=p1;
}
if(p2!=NULL)
{
p->next=p2;
}

}

/*将两个多项式相减*/
void Polynomial::PolySubstract(Link &pc,Link pa,Link pb)
{
Link p,pt;
CopyLink(pt,pb);
p=pt;
while(p!=NULL)
{
(p->data).coef=(-(p->data).coef);
p=p->next;
}
PolyAdd(pc,pa,pt);
DestroyLink(pt);
}

//清屏函数
void Polynomial::Clear()
{
system("pause");
system("cls");
}

Polynomial::Polynomial()
{
a=0;
}



#include "Polynomial.h"
#include
using namespace std;
void Menu()
{
cout <<"----输入“1”:创建两个一元多项式 ----" <<endl;
cout <<"----输入“2”:将两个一元多项式进行相加 ----" <<endl;
cout <<"----输入“3”:将两个一元多项式进行相减 ----" <<endl;
}


//判断输入的整数是不是为1到2的数字
int CompareIfNum(int i)
{
if(i>0&&i <8)
return 0;
else return 1;
}
int main()
{
Polynomial test;
int n;
Link L,pc=NULL,pa=NULL,pb=NULL,La=NULL,Lb=NULL;//La,Lb分别为创建的两个多项式
int choose;
while(1)
{
Menu(); //调用菜单函数
cin>>choose;
switch(choose)
{
case 1:
cout <<"请输入你要运算的第一个一元多项式的项数:" <<endl;
cin>>n;
if(CompareIfNum(n)==1)
{
cout <<"您的输入有误,请重新输入!" <<endl;
test.Clear();
break;
}
test.CreateLink(La,n);
cout <<"请输入您要运算的第二个一元多项式的项数:" <<endl;
cin>>n;
if(CompareIfNum(n)==1)
{
cout <<"您的输入有误,请重新输入!" <<endl;
test.Clear();
break;
}
test.CreateLink(Lb,n);
test.Clear();
break;

case 3:
if(La==NULL||Lb==NULL)
{
cout <<"您的多项式创建有误,请重新选择!" <<endl;
test.Clear();
break;
}


test.PolySubstract(L,La,Lb);
cout <<"要相减的两个一元多项式分别为:" <<endl;
test.PrintList(La);
test.PrintList(Lb);
cout <<"两个式子相减后的结果为:" <<endl;
test.PrintList(L);
test.Clear();
test.DestroyLink(L);
break;

case 2:
if(La==NULL||Lb==NULL)
{
cout <<"您的多项式创建有误,请重新选择!" <<endl;
test.Clear();
break;
}

test.PolyAdd(L,La,Lb);
cout <<"要相加的两个一元多项式分别为:" <<endl;
test.PrintList(La);
test.PrintList(Lb);
cout <<"两个式子相加后的结果为:" <<endl;
test.PrintList(L);
test.Clear();
test.DestroyLink(L);
break;
}
}
return 0;
}




#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H
struct Node
{
float coef;//结点类型
int exp;
};
typedef Node polynomial;
struct LNode
{
polynomial data;//链表类型
LNode *next;
};
typedef LNode* Link;
class Polynomial {
public:
Polynomial();
void CreateLink(Link &L,int n);
void PrintList(Link L);
void PolyAdd(Link &pc,Link pa,Link pb);
void PolySubstract(Link &pc,Link pa,Link pb);
void CopyLink(Link &pc,Link pa);
void DestroyLink(Link &L);
void Clear();
private:
int a;
};
#endif

#include #define N 1000int ap[N];int ae[N];int bp[N];int be[N];int main() { int i = 0, j = 0; int alen, blen; while (scanf("%d%d", &ap[i], &ae[i]), ap[i] >= 0 && ae[i] >= 0) { i++; } while (scanf("%d%d", &bp[j], &be[j]), bp[j] >= 0 && be[j] >= 0) { j++; } alen = i, blen = j; i = j = 0; while (i be[j]) { printf("%d %d ", ap[i], ae[i]); i++; } else if (ae[i] < be[j]) { printf("%d %d ", bp[j], be[j]); j++; } else { printf("%d %d ", bp[j]+ap[i], be[j]); i++; j++; } } while (i < alen) { printf("%d %d ", ap[i], ae[i]); i++; } while (j < blen) { printf("%d %d ", bp[j], be[j]); j++; } return 0;}大体上代码就是这样了,可能还需要根据题目微调一下N的大小,还有对0系数的处理

#include<iostream.h>
#include<stdlib.h>
#include"stdio.h"

typedef struct
{ float coef;//结点类型
int expn;
}polynomial;

typedef struct LNode
{ polynomial data;//链表类型
struct LNode *next;
}LNode,*Link;

void createLink(Link &L,int n);
void printList(Link L);
void addPolyn(Link &pc,Link pa,Link pb);
void substractPolyn(Link &pc,Link pa,Link pb);
void copyLink(Link &pc,Link pa);
void mulPolyn(Link &pc,Link pa,Link pb);
int locateLink(Link pa,Link e);
void destroyLink(Link &L);
int compareNum(int i);

void destroyLink(Link &L)
{
Link p;
p=L->next;
while(p)
{
L->next=p->next;
delete p;
p=L->next;
}
delete L;
L=NULL;
}

void createLink(Link &L,int n)
{
if(L!=NULL){destroyLink(L);}
Link p,newp;
//int k=0;
L=new LNode;
L->next=NULL;
(L->data).expn=-1;//创建头结点
p=L;

/*newp=new LNode;
cout<<"请输入第1项的系数和指数:"<<endl;
cout<<"系数:";
cin>>(newp->data).coef;
cout<<"指数:";
cin>>(newp->data).expn;
p->next=newp;
newp->next=NULL;*/

for(int i=1;i<=n;i++)
{
newp=new LNode;
cout<<"请输入第"<<i<<"项的系数和指数:"<<endl;
cout<<"系数:";
cin>>(newp->data).coef;

cout<<"指数:";
cin>>(newp->data).expn;
if(newp->data.expn<0){cout<<"您输入有误,指数不允许为负值!"<<endl;delete newp;i--;continue;}
newp->next=NULL;
p=L;
if(newp->data.coef==0){cout<<"系数为零,重新输入!"<<endl;delete newp;i--;continue;}
// if(i==1) {p->next=newp;continue; }
while((p->next!=NULL)&&((p->next->data).expn<(newp->data).expn))
{p=p->next;}
if(!locateLink( L, newp))
{
newp->next=p->next;
p->next=newp;
}
else
{
cout<<"输入的该项指数与多项式中已存在的某项相同,请重新创建一个正确的多项式"<<endl;
delete newp;
destroyLink(L);
createLink(L,n);
break;
}
}
}

/*判断指数是否与多项式中已存在的某项相同*/
int locateLink(Link L,Link e)
{
Link p;
p=L->next;
while(p!=NULL&&(e->data.expn!=p->data.expn))
p=p->next;
if(p==NULL)return 0;

else return 1;
}

/*输出链表*/
void printList(Link L)
{
Link p;

if(L==NULL||L->next==NULL) cout<<"该一元多项式为空!"<<endl;
else
{
p=L->next;
if((p->data).coef>0)
{
//if((p->data).coef==1&&(p->data).expn==0)
// cout<<"1";
if((p->data).expn==0)
cout<<(p->data).coef;
else if((p->data).coef==1&&(p->data).expn==1)
cout<<"x";
else if((p->data).coef==1&&(p->data).expn!=1)
cout<<"x^"<<(p->data).expn;
else if((p->data).expn==1&&(p->data).coef!=1)
cout<<(p->data).coef<<"x";
else cout<<(p->data).coef<<"x^"<<(p->data).expn;
}
if((p->data).coef<0)
{
if((p->data).expn==0)
cout<<(p->data).coef;
else if(p->data.coef==-1&&p->data.expn==1)
cout<<"-x";
else if(p->data.coef==-1&&p->data.expn!=1)
cout<<"-x^"<<p->data.expn;
else if(p->data.expn==1)
cout<<p->data.coef<<"x";
else cout<<(p->data).coef<<"x^"<<(p->data).expn;
}
p=p->next;
while(p!=NULL/*&&(p->data).coef!=0*/)
{
if((p->data).coef>0)
{
if((p->data).expn==0)
cout<<"+"<<(p->data).coef;
else if((p->data).expn==1&&(p->data).coef!=1)
cout<<"+"<<(p->data).coef<<"x";
else if((p->data).expn==1&&(p->data).coef==1)
cout<<"+"<<"x";
else /*if((p->data).coef==1&&(p->data).expn==0)
cout<<"+"<<"1";
else*/ if((p->data).coef==1&&(p->data).expn!=1)
cout<<"+"<<"x^"<<(p->data).expn;
else cout<<"+"<<(p->data).coef<<"x^"<<(p->data).expn;
}
if((p->data).coef<0)
{
if((p->data).expn==0)
cout<<(p->data).coef;
else if(p->data.coef==-1&&p->data.expn==1)
cout<<"-x";
else if(p->data.coef==-1&&p->data.expn!=1)
cout<<"-x^"<<p->data.expn;
else if(p->data.expn==1)
cout<<p->data.coef<<"x";
else cout<<(p->data).coef<<"x^"<<(p->data).expn;
}

p=p->next;
}
}

cout<<endl;
}

/*把一个链表的内容复制给另一个链表*/
void copyLink(Link &pc,Link pa)
{
Link p,q,r;
pc=new LNode;
pc->next=NULL;
r=pc;
p=pa;
while(p->next!=NULL)
{q=new LNode;
q->data.coef=p->next->data.coef;
q->data.expn=p->next->data.expn;
r->next=q;
q->next=NULL;
r=q;
p=p->next;
}
}

/*将两个一元多项式相加*/
void addPolyn(Link &pc,Link pa,Link pb)
{
Link p1,p2,p,pd;
copyLink(p1,pa);
copyLink(p2,pb);
pc=new LNode;
pc->next=NULL;
p=pc;
p1=p1->next;
p2=p2->next;
while(p1!=NULL&&p2!=NULL)
{
if(p1->data.expn<p2->data.expn)
{
p->next=p1;
p=p->next;
p1=p1->next;
}
else if(p1->data.expn>p2->data.expn)
{
p->next=p2;
p=p->next;
p2=p2->next;
}
else
{
// newp=new LNode;
p1->data.coef=p1->data.coef+p2->data.coef;
//p1->data.expn=p1->data.expn;
if(p1->data.coef!=0)
{
p->next=p1;
p=p->next;
p1=p1->next;
p2=p2->next;
}
else
{
pd=p1;
p1=p1->next;
p2=p2->next;
delete pd;
}

}

}
if(p1!=NULL)
{
p->next=p1;
}
if(p2!=NULL)
{
p->next=p2;
}

}

/*将两个多项式相减*/
void substractPolyn(Link &pc,Link pa,Link pb)
{
Link p,pt;
copyLink(pt,pb);
p=pt;
while(p!=NULL)
{
(p->data).coef=(-(p->data).coef);
p=p->next;
}
addPolyn(pc,pa,pt);
destroyLink(pt);
}
//清屏函数
void Clear()
{
char a;
cout<<"请按 回车键 继续……"<<endl;
a=getchar();
system("cls");
}

/*将两个一元多项式相乘*/
void mulPolyn(Link &pc,Link pa,Link pb)
{
Link p1,p2,p,pd,newp,t;
pc=new LNode;
pc->next=NULL;
p1=pa->next;
p2=pb->next;
while(p1!=NULL)
{
pd=new LNode;
pd->next=NULL;
p=new LNode;
p->next=NULL;
t=p;
while(p2)
{
newp=new LNode;
newp->next=NULL;
newp->data.coef=p1->data.coef*p2->data.coef;
newp->data.expn=p1->data.expn+p2->data.expn;
t->next=newp;
t=t->next;
p2=p2->next;
}
addPolyn(pd,pc,p);
copyLink(pc,pd);
p1=p1->next;
p2=pb->next;
destroyLink(p);
destroyLink(pd);
}
/*
Link p,q,r,pd,pe;
pc=new LNode;
pc->next=NULL;
pe=new LNode;
pe->next=NULL;
p=pa->next;
q=pb->next;
while(p!=NULL)
{
while(q!=NULL)
{r=new LNode;
r->data.coef=p->data.coef*q->data.coef;
r->data.expn=p->data.expn+q->data.expn;
pe->next=r;
r->next=NULL;
addPolyn(pd,pc,pe);
copyLink(pc,pd);
pe->next=NULL;
q=q->next;
destroyLink(pd);
}
destroyLink(pe);
p=p->next;
q=pb->next;
}*/
}

//菜单函数
void menuPrint()
{

cout<<"\t***********一元多项式的简单运算*************"<<endl;
cout<<"\t\t 1创建要运算的两个一元多项式"<<endl;
cout<<"\t\t 2将两个一元多项式相加"<<endl;
cout<<"\t\t 3将两个一元多项式相减"<<endl;
cout<<"\t\t 4将两个一元多项式相乘"<<endl;
cout<<"\t\t 5显示两个一元多项式"<<endl;
cout<<"\t\t 6销毁所创建的二个多项式"<<endl;
cout<<"\t\t 7退出"<<endl;
cout<<"请输入你要进行的操作(1-7)"<<endl;
}

//判断输入的整数是不是字符
int compareNum(int i)
{
if(i==-32766)
return 0;
else return 1;
}

void main()
{
int n=-32766;
Link L,La=NULL,Lb=NULL;
int choose;
while(1)
{
menuPrint();
cin>>choose;
switch(choose)
{
case 1:
cout<<"请输入你要运算的第一个一元多项式的项数:"<<endl;
cin>>n;
if(compareNum(n)==0){cout<<"您的输入有误,请重新输入……"<<endl;Clear();break;}
createLink(La,n);
cout<<"请输入你要运算的第二个一元多项式的项数:"<<endl;
cin>>n;
if(compareNum(n)==0){cout<<"您的输入有误,请重新输入……"<<endl;Clear();break;}
createLink(Lb,n);
Clear();
break;
case 2:
if(La==NULL||Lb==NULL){cout<<"您的多项式创建有误,请重新选择……"<<endl;Clear();break;}
addPolyn(L,La,Lb);
cout<<"相加的两个一元多项式为:"<<endl;
printList(La);
printList(Lb);
cout<<"相加后的结果为:"<<endl;
printList(L);
Clear();
destroyLink(L);
break;
case 3:
if(La==NULL||Lb==NULL){cout<<"您的多项式创建有误,请重新选择……"<<endl;Clear();break;}
substractPolyn(L,La,Lb);
cout<<"相减的两个一元多项式为:"<<endl;
printList(La);
printList(Lb);
cout<<"相减后的结果为:"<<endl;
printList(L);
Clear();
destroyLink(L);
break;
case 4:
if(La==NULL||Lb==NULL){cout<<"您的多项式创建有误,请重新选择……"<<endl;Clear();break;}
mulPolyn(L,La,Lb);
cout<<"相乘的两个一元多项式为:"<<endl;
printList(La);
printList(Lb);
cout<<"相乘后的结果为:"<<endl;
printList(L);
destroyLink(L);
Clear();
break;
case 5:
if(La==NULL||Lb==NULL){cout<<"您的多项式创建有误,请重新选择……"<<endl;Clear();break;}
cout<<"第一个一元多项式为:"<<endl;
printList(La);
cout<<"第二个一元多项式为:"<<endl;
printList(Lb);
Clear();
break;
case 6:
if(La&&Lb){destroyLink(La);destroyLink(Lb);cout<<"销毁成功!"<<endl;Clear();}
else
{ cout<<"多项式不存在,请重新选择^^^"<<endl;Clear();}
break;
case 7:
exit(0);
default:
cout<<"您的输入有误,请重新选择操作……"<<endl;Clear();
break;
}

}
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhoubols/archive/2008/04/01/2241936.aspx


数据结构(c++)一元多项式的代数运算视频

相关评论:
  • 18695974163请高手帮帮忙,我写了数据结构中的一元多项式的表示及相加,只有框架,能...
    咎省洋一元多项式的相加 提示:(1) 一元多项式的表示问题:对于任意一元多项式:Pn(x)= P0+ P1X1+ P2X2+ … + PiXi+ … + PnXn 可以抽象为一个由“系数-指数”对构成的线性表,且线性表中各元素的指数项是递增的:P=( ( P0,0), ( P1,1), ( P2,2), … , ( Pn,n) )(2 ) ...

  • 18695974163谁能帮我用c语言帮我写一个一元多项式程序。
    咎省洋我记得数据结构书上有源代码的啊...还是帮你写了一个,整整一个小时啊,累死我了 include <stdio.h> include <stdlib.h> include <assert.h> typedef struct _List List;struct _List { int c;int e;List* next;};define OPER_PLUS 0 define OPER_MINUS 1 static List* list_oper(List*...

  • 18695974163谁有《数据结构》(C语言版)严蔚敏,清华大学2005年的课本?麻烦把目录告 ...
    咎省洋数据结构(C语言版)严蔚敏 清华大学出版社 目录 第1章 绪论 1.1 什么是数据结构 1.2 基本概念和术语 1.3 抽象数据类型的表现与实现 1.4 算法和算法分析 第2章 线性表 2.1 线性表的类型定义 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 一元多项式的表示及相加 第3章 ...

  • 18695974163数据结构实验-一元多项式的表示与相加,程序出现莫名错误
    咎省洋scanf("%d,%d",&c,&e);输入时要有逗号 4,4,3,3,2,2,0,0 还有 你这c c++输入输出流一起用 真是...

  • 18695974163如何用C语言实现一元多项式简单计算器的设计
    咎省洋\/*:---一元稀疏多项式计算(部分)--- 基本功能:(1)输入并建立多项式;(2)多项式输出,以 c1,e1,c2,e2,...输出 其中ci为系数,ei为指数;(3)多项式相加,c=a+b。说明: (1)多项式一指数升序排序,但输入时不检查;(2)以带头指针的单链表存储。---*\/ define OK 1 define FAILE 0 defin...

  • 18695974163数据结构(C语言版) (1光盘)目录
    咎省洋数据结构(C语言版) (1光盘)的目录内容概述如下:第1章 绪论 1.1 数据结构的基础介绍 1.2 基本概念和术语解析 1.3 抽象数据类型的理论与实现方法 1.4 算法与分析 1.4.1 算法的定义与理解 1.4.2 算法设计的关键要素 1.4.3 算法效率评估指标 1.4.4 算法对存储空间的需求...

  • 18695974163数据结构试验怎么做?
    咎省洋1. 用链表作一元多项式的数据结构,用C语言对链表作说明 2. 生成输入一元多项式的函数 3. 输入一元多项式A(x)和B(x)4. 以一元多项式A(x)为和多项式,将B(x)多项式中系数加入到A(x)中去 实验二 后缀表达式计算 一、实验目的 熟悉栈的使用。掌握如何使用C语言实现栈的说明、创建以及进栈和出栈...

  • 18695974163数据结构--队列,栈,线性表,树
    咎省洋2. 应用场景:手机通讯录,一元多项式 3. 需要了解的名词:前驱:指定元素的前面的元素 后继:指定元素的后面的元素 4. 链表分为:单向链表,双向链表,循环链表,静态链表 四,树 1. 树是节点的有限集合 2. 需要了解的名词:孩子:BCD之于A 双亲:A 度:A的度为3,B的度为2,C的度为0,D...

  • 18695974163数据结构编写模拟计算器或者一元多项式
    咎省洋\/\/我有个建立的用c++.net写的老窖了 加法自己做嘛 也不难的 \/\/main.cpp include "stdafx.h"include<iostream> include<windows.h> include<stdlib.h> include<ctime> include"data_structure.h"include"tripleTable_class.h"include"tripleTable_function.h"include"crossLink_class.h"include"cross...

  • 18695974163关于数据结构的链表问题 两一元多项式相乘
    咎省洋while(c!=0){ s=(polynode *)malloc(sizeof(polynode));s->coef=c;s->exp=e;r->next=s;r=s;printf("enter coef :");scanf("%d",&c);printf("enter exp :");scanf("%d",&e);} r->next=NULL;return (h);} void Dispolynode(polynode *p)\/\/输出函数,打印出一元多项式 { pr...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网