? 通過(guò)C語(yǔ)言實(shí)現(xiàn)插入排序算法:對(duì)于少量排序的元素,插入排序是一個(gè)有效的算法,其操作過(guò)程類似于手中的撲克牌,從第二個(gè)元素從左往右循環(huán)檢查比較,滿足A[i]A[i-1],則交換A[i]與A[i-1]的值。往復(fù)循環(huán)直到最后一個(gè)元素比較完成。具體程序如下:
成都創(chuàng)新互聯(lián)公司主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)視覺設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、營(yíng)銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式網(wǎng)站建設(shè)公司、手機(jī)網(wǎng)站開發(fā)、微商城、網(wǎng)站托管及網(wǎng)站維護(hù)、WEB系統(tǒng)開發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為成都汽車玻璃修復(fù)行業(yè)客戶提供了網(wǎng)站建設(shè)服務(wù)。
#include stdio.h
#includeconio.h
/*----------
*INSERT_SORT
*
* args
* A[] int[],the number of A arrary
* len int ,A length
*
------------*/
void insert_sort(int A[],int len){
int i,j,key;
//printf("A length %d\n",len);? //output arrary length
for(j=1;jlen;j++){
? ? key=A[j];
? ? i=j-1;
? ? while (i-1A[i]key) {? ? //i from 0 to 5,so i-1
? ? ? ? A[i+1]=A[i];
? ? ? ? i=i-1;
? ? ? ? A[i+1]=key;
? ? }
}
//output A arrary
for(i=0;ilen;i++)
? ? printf("%d ",A[i]);
}
int main()
{
int A[10];
int i=0;
char c;
while(1){
? ? scanf("%d",A[i]); //input unmbers
? ? c=getchar();
? ? if(c=='\n')
? ? ? ? break;
? ? i++;
}
//printf("%d %d %d %d %d %d %d %d\n",A[0],A[1],A[2],A[3],A[4],A[5],A[6],A[7]);
//use insert_sort
insert_sort(A,i+1); //A length is i+1
return 0;
}
/*---test------------
* input 5 2 4 6 1 3
*
* output 1 2 3 4 5 6
* ------------------*/
以上程序使用的是Qt Creator 工具,用C語(yǔ)言實(shí)現(xiàn),經(jīng)調(diào)試已經(jīng)通過(guò)。
但依然有個(gè)問(wèn)題:在main()函數(shù)中調(diào)用insert_sort(int A[])時(shí),若單傳數(shù)組參數(shù)A[],再在insert_sort(int A[])函數(shù)里面調(diào)用len=sizeof(A)/sizeof(int)計(jì)算數(shù)組實(shí)際輸入長(zhǎng)度,但是得不到實(shí)際輸入的數(shù)組長(zhǎng)度,所以只能采用實(shí)參的方式將具體數(shù)字通過(guò)len傳到insert_sort(int A[],int len );在insert_sort(int A[])接收到A數(shù)組后直接計(jì)算A[]實(shí)際輸入長(zhǎng)度,有什么辦法可以實(shí)現(xiàn)?
算法描述
一般來(lái)說(shuō),插入排序都采用in-place在數(shù)組上實(shí)現(xiàn)。具體算法描述如下:
從第一個(gè)元素開始,該元素可以認(rèn)為已經(jīng)被排序
取出下一個(gè)元素,在已經(jīng)排序的元素序列中從后向前掃描
如果該元素(已排序)大于新元素,將該元素移到下一位置
重復(fù)步驟3,直到找到已排序的元素小于或者等于新元素的位置
將新元素插入到該位置后
重復(fù)步驟2~5
如果比較操作的代價(jià)比交換操作大的話,可以采用二分查找法來(lái)減少比較操作的數(shù)目。該算法可以認(rèn)為是插入排序的一個(gè)變種,稱為二分查找排序。
范例程式碼
void insertion_sort(int array[], int first, int last)
{
int i,j;
int temp;
for (i = first+1; i=last;i++)
{
temp = array[i];
j=i-1;
while((j=first) (array[j] temp))
{
array[j+1] = array[j];
j--;
}
array[j+1] = temp;
}
}
#include stdio.h
#include "4-1 CreateData.c" //生成隨機(jī)數(shù)的函數(shù)
#define ARRAYLEN 10 //需要排序的數(shù)據(jù)元素?cái)?shù)量
void InserSort(int a[],int n)//直接插入排序
{
int i,j,t;
for(i=1;in;i++)
{
t=a[i]; //取出一個(gè)未排序的數(shù)據(jù)
for(j=i-1;j=0 ta[j];--j) //在排序序列中查找位置
a[j+1]=a[j]; //向后移動(dòng)數(shù)據(jù)
a[j+1]=t; //插入數(shù)據(jù)到序列
}
}
int main()
{
int i,a[ARRAYLEN]; //定義數(shù)組
for(i=0;iARRAYLEN;i++) //清空數(shù)組
a[i]=0;
if(!CreateData(a,ARRAYLEN,1,100)) //判斷生成隨機(jī)數(shù)是否成功
{
printf("生成隨機(jī)數(shù)不成功!\n");
getch();
return 1;
}
printf("原數(shù)據(jù):"); //輸出生成的隨機(jī)數(shù)
for(i=0;iARRAYLEN;i++)
printf("%d ",a[i]);
printf("\n");
InserSort(a,ARRAYLEN); //調(diào)用插入排序函數(shù)
printf("排序后:");
for(i=0;iARRAYLEN;i++) //輸出排序后的結(jié)果
printf("%d ",a[i]);
printf("\n");
getch();
return 0;
}
主要是看懂這個(gè)函數(shù) void InserSort(int a[],int n)
//C++課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
#include stdio.h
#include string.h
#include iostream.h
#include stdlib.h
#include windows.h
typedef struct studentinfo //結(jié)構(gòu)體定義
{
int num;//學(xué)號(hào)
char name[64];//姓名
int sex;//性別,1為男性,0為女性
float math;//數(shù)學(xué)
float english;//英語(yǔ)
float politic;//政治
float chinese;//語(yǔ)文
float total;//總成績(jī)
struct studentinfo *next;
}STUDENT;
#define FILENAME "D:\\1.txt"
//定義默認(rèn)的數(shù)據(jù)庫(kù)文件
#define DELAYTIME 1500
//顯示信息,延時(shí)
void create_menu();
STUDENT * new_student();
STUDENT* create_linkbyfile(char *);
STUDENT *del_info(STUDENT *);
int save_info(char *,STUDENT *,int);
int find_infile_printf(char *);
int pri_whole_link(STUDENT *);
STUDENT* printf_sort(STUDENT *);
void free_link(STUDENT *);
void main() //主函數(shù)
{
create_menu();
}
STUDENT * reverse(STUDENT *head)
//功能:鏈表反轉(zhuǎn)順序
//參數(shù):head鏈表頭結(jié)點(diǎn)指針
{
STUDENT *ptemp,*p1;
if(head==NULL)
{
return 0;
}
p1=head;//p1使之永遠(yuǎn)指向排好序的第一個(gè)結(jié)點(diǎn),初值為head,head使之永遠(yuǎn)是已經(jīng)排好序的最后一個(gè)結(jié)點(diǎn)
while(head-next!=NULL)//本次循環(huán)使ptemp排好序
{
ptemp=head-next;//ptemp指向未排好序的第一個(gè)結(jié)點(diǎn)
head-next=ptemp-next;//
ptemp-next=p1;//ptemp也排好序了,ptemp變成排好序的第一個(gè)結(jié)點(diǎn)了
p1=ptemp;//再次讓p1成為第一個(gè)排好序的結(jié)點(diǎn)
}
return p1;//頭結(jié)點(diǎn)為第一個(gè)結(jié)點(diǎn)
}
void create_menu()
//功能:輸出功能菜單,提供人-機(jī)接口
{
char menu_Num;
STUDENT *head=NULL;
char ch;
char file_name[256];
while(1)
{
system("cls");
cout"\t\t學(xué)生成績(jī)管理系統(tǒng)\n";
cout"##########################################\n";
cout"#\t\t 1.新增學(xué)生信息\t\t #\n";
cout"#\t\t 2.加載數(shù)據(jù)庫(kù)\t\t #\n";
cout"#\t\t 3.刪除學(xué)生信息\t\t #\n";
cout"#\t\t 4.保存學(xué)生信息\t\t #\n";
cout"#\t\t 5.數(shù)據(jù)庫(kù)查詢\t\t #\n";
cout"#\t\t 6.原序輸出\t\t #\n";
cout"#\t\t 7.排序輸出\t\t #\n";
cout"#\t\t 8.退出\t\t\t #\n";
cout"##########################################\n";
cout"請(qǐng)輸入操作編號(hào):";
cinmenu_Num;
switch (menu_Num)
{
case '1':
free_link(head);//釋放鏈表空間
head=new_student();//新增學(xué)生信息
break;
case '2':
free_link(head);//釋放鏈表空間
cout"請(qǐng)輸入要加載的數(shù)據(jù)庫(kù)文件的路徑"endl;
cinfile_name;
head=create_linkbyfile(file_name);//讀取數(shù)據(jù)文件
if(head!=NULL)
{
cout"數(shù)據(jù)庫(kù)"file_name"已加載"endl;
Sleep(DELAYTIME);
}
break;
case '3':
del_info(head);//刪除學(xué)生信息
break;
case '4'://保存學(xué)生信息
if (head==NULL)
{
cout"請(qǐng)先生成學(xué)生信息"endl;
Sleep(DELAYTIME);
}
else
{
cout"想將學(xué)生信息保存到哪個(gè)數(shù)據(jù)庫(kù)文件?";
cinfile_name;
cout"請(qǐng)選擇保存方式:0追加到文件末尾 1覆蓋文件\n";
cinmenu_Num;
if(save_info(file_name,head,menu_Num-'0')==0)//0表示追加,1表示覆蓋
{
cout"信息保存失敗\n";
}
else
{
cout"數(shù)據(jù)已保存到"file_nameendl;
Sleep(DELAYTIME);
}
}
break;
case '5':
find_infile_printf(FILENAME);//數(shù)據(jù)庫(kù)查詢
break;
case '6'://原序輸出信息
pri_whole_link(head);
cout"返回主菜單? Y/N\t";
do
{
cinch;
}while(ch!='Y'ch!='y');
break;
case '7'://排序輸出信息
do
{
if((head=printf_sort(head))==NULL)
{
cout"數(shù)據(jù)庫(kù)未加載"endl;
Sleep(DELAYTIME);
break;
}
else
{
cout"選擇其他方式排序? Y/N\t";
cinch;
}
}while(ch=='Y'||ch=='y');
break;
case '8':
free_link(head);//釋放鏈表空間
exit(0);
break;
default:
cout"輸入有誤!請(qǐng)重新輸入!"endl;
Sleep(DELAYTIME);
break;
}
}
}
STUDENT * new_student()
//功能:創(chuàng)建學(xué)生信息(通過(guò)鏈表)
//返回值:頭結(jié)點(diǎn)指針
{
STUDENT *pnew,*p,*head;
float *pfloat;
char ch;
head=NULL;
do
{
system("cls");
pnew=(STUDENT *)malloc(sizeof(STUDENT)*1);
cout"請(qǐng)輸入學(xué)生的學(xué)號(hào)(0表示取消): ";
cinpnew-num;
if(0=pnew-num)
{
break;
}
cout"請(qǐng)輸入學(xué)生的姓名:";
cinpnew-name;
while(1)
{
cout"請(qǐng)輸入學(xué)生的性別:0/1\t";
cinpnew-sex;
if(pnew-sexpnew-sex-1)
{
cout"性別輸入錯(cuò)誤,0表示女性,1表示男性,請(qǐng)重新輸入"endl;
}
else
{
break;
}
}
cout"請(qǐng)依次輸入學(xué)生的數(shù)學(xué)、英語(yǔ)、政治、語(yǔ)文成績(jī):"endl;
for(pnew-total=0,pfloat=pnew-math;pfloatpnew-math+4;)
{
cin*pfloat;
if(*pfloat0||*pfloat150)
{
cout"成績(jī)輸入錯(cuò)誤,只能為0~150"endl;
}
else
{
pnew-total+=*pfloat;
pfloat++;
}
}
if(head==NULL)
{
head=pnew;
}
else
{
p-next=pnew;
}
p=pnew;
pnew-next=NULL;
cout"##########################該學(xué)生信息已生成#########################\n";
cout"建立另一個(gè)學(xué)生的信息? Y/N\t";
cinch;
}while(ch=='Y'||ch=='y');
return head;
}
STUDENT* create_linkbyfile(char *filename)
//功能:讀取文件,創(chuàng)建鏈表
//參數(shù):如果filename不為空,則打開該文件,如果filename為空,要求輸入文件位置
//創(chuàng)建的鏈表的所有結(jié)點(diǎn)的next全部修改,指向物理地址上的下一個(gè)結(jié)點(diǎn)
{
system("cls");
FILE *fp;
STUDENT *head,*ptemp,*pnew;
head=NULL;//初始化head為空
if(filename==NULL)//若filename為空,要求輸入文件絕對(duì)地址
{
char file_name[256];
cout"請(qǐng)輸入數(shù)據(jù)庫(kù)文件的路徑:"endl;
cinfile_name;
if(NULL==(fp=fopen(file_name,"rb")))
{
cout"數(shù)據(jù)庫(kù)連接失敗\n";
return 0;
}
}
else
{
if(NULL==(fp=fopen(filename,"rb")))
{
cout"數(shù)據(jù)庫(kù)連接失敗\n";
return 0;
}
}
for(ptemp=NULL;;)
{
pnew=(STUDENT *)malloc(sizeof(STUDENT)*1);
if(fread(pnew,sizeof(STUDENT),1,fp)!=NULL)
{
if(ptemp!=NULL)
{
ptemp-next=pnew;
}
else
{
head=pnew;
}
ptemp=pnew;
}
else
{
if(ptemp!=NULL)
{
ptemp-next=NULL;
}
else
{
head=NULL;
}
free(pnew);
break;
}
}
fclose(fp);
return head;
}
STUDENT *del_info(STUDENT *head)
//根據(jù)學(xué)號(hào),刪除鏈表的結(jié)點(diǎn)
{
system("cls");
STUDENT *p1,*p2;
int num;
if (head==NULL)
{
cout"數(shù)據(jù)庫(kù)未加載"endl;
Sleep(DELAYTIME);
return 0;
}
cout"請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):";
cinnum;
for(p1=head;p1!=NULL;)
{
if(p1-num==num)//找到
{
if(p1==head)//要?jiǎng)h除的結(jié)點(diǎn)是頭結(jié)點(diǎn)
{
head=p1-next;
}
else
{
p2-next=p1-next;
}
cout"成功刪除!!";
}
p2=p1;
p1=p1-next;
}
return head;
}
int save_info(char *filename,STUDENT *head,int flag)
//功能:將鏈表按Binary寫入文件末尾
//參數(shù):
//1.filename文件名,絕對(duì)地址
//2.head指向鏈表的頭結(jié)點(diǎn)
//3.flag 0追加或1覆蓋數(shù)據(jù)
//返回值:失敗則返回0
{
system("cls");
FILE *fp;
STUDENT *p;
char openmethod[8];
if(flag==0)
{
strcpy(openmethod,"ab+");//追加
}
else
{
strcpy(openmethod,"w");//覆蓋
}
if(NULL==(fp=fopen(filename,openmethod)))//
{
cout"數(shù)據(jù)庫(kù)連接失敗"endl;
Sleep(DELAYTIME);
return 0;
}
else
{
for(p=head;p;p=p-next)
{
if((fwrite(p,sizeof(STUDENT),1,fp))==NULL)
{
cout"數(shù)據(jù)庫(kù)創(chuàng)建失敗"endl;
return 0;
}
}
}
fclose(fp);
return 1;
}
int find_infile_printf(char *filename)
//功能:根據(jù)學(xué)號(hào)和姓名來(lái)查詢某個(gè)學(xué)生
//參數(shù):filename數(shù)據(jù)庫(kù)文件
//返回值:失敗返回0
//直接搜索文件,缺點(diǎn)是速度慢
//也可先根據(jù)文件創(chuàng)建鏈表,再搜索鏈表,缺點(diǎn)是如果文件較大,占用內(nèi)存多
{
system("cls");
FILE *fp;
STUDENT stu;
int num;
char stu_name[64];
char ch;
if(filename==NULL)
{
return 0;
}
do
{
memset(stu_name,0,sizeof(stu_name));
cout"查詢學(xué)號(hào)或查詢姓名? 1查詢學(xué)號(hào) 0查詢姓名";
//flag=1根據(jù)學(xué)號(hào)來(lái)查詢,flag=0根據(jù)姓名來(lái)查詢
cinnum;
if(num==1)
{
cout"輸入要查詢的學(xué)號(hào):";
cinnum;
cout"正在為您查詢學(xué)號(hào)為"num"的學(xué)生……"endl;
}
else if(num==0)
{
cout"輸入要查詢的姓名:";
cinstu_name;
cout"正在為您查詢姓名為"stu_name"的學(xué)生……"endl;
}
else
{
cout"輸入有誤"endl;
return 0;
}
if(NULL==(fp=fopen(filename,"rw")))
{
cout"數(shù)據(jù)庫(kù)連接失敗\n";
return 0;
}
else
{
while(fread(stu,sizeof(STUDENT),1,fp)!=NULL)
{
if(strcmp(stu.name,stu_name)==0||stu.num==num)
{
cout"學(xué)號(hào)\t姓名\t性別\t數(shù)學(xué)\t英語(yǔ)\t政治\t語(yǔ)文\t總成績(jī)\n";
//輸出該學(xué)生的所有信息
coutstu.num"\t"stu.name"\t"stu.sex"\t"stu.math"\t"stu.english"\t"stu.politic"\t"stu.chinese"\t"stu.totalendl;
//不加break;可支持多個(gè)相同數(shù)據(jù)的索引
}
}
}
cout"##########################查詢完畢#########################\n";
cout"查詢另一個(gè)學(xué)生的信息? Y/N\t";
cinch;
}while(ch=='Y'||ch=='y');
fclose(fp);
return 1;
}
int pri_whole_link(STUDENT *head)
//功能:顯示整條鏈表的學(xué)生信息
//參數(shù):head 頭結(jié)點(diǎn)指針,如果head為空,返回空
{
system("cls");
STUDENT* p;
if (head==NULL)
{
cout"數(shù)據(jù)庫(kù)未加載"endl;
Sleep(DELAYTIME);
return 0;
}
cout"學(xué)號(hào)\t姓名\t性別\t數(shù)學(xué)\t英語(yǔ)\t政治\t語(yǔ)文\t總成績(jī)\n";
for(p=head;p;p=p-next)
{
coutp-num"\t"p-name"\t"p-sex"\t"p-math"\t"p-english"\t"p-politic"\t"p-chinese"\t"p-totalendl;
}
return 1;
}
STUDENT* printf_sort(STUDENT *head)
//功能:根據(jù)學(xué)號(hào)|某科目成績(jī)|總成績(jī)對(duì)鏈表進(jìn)行排序,然后輸出
//參數(shù):head鏈表頭指針,如果head為空,返回空
//返回值:返回新的鏈表的頭結(jié)點(diǎn)指針
{
system("cls");
STUDENT *p1,*p2,*ptemp,*pfinished=NULL;
char num;
char flag;
if (head==NULL)
{
return 0;
}
cout"選擇排序依據(jù) 0.數(shù)學(xué)成績(jī)1.英語(yǔ)成績(jī)2.政治成績(jī)3.語(yǔ)文成績(jī)4.總成績(jī)\n";
while(1)
{
cinnum;
if(num'4'||num'0')
{
cout"輸入有誤,請(qǐng)重新輸入 0~4"endl;
}
else
{
break;
}
}
cout"升序/降序輸出? 0.降序1.升序";
while(1)
{
cinflag;
if(flag'1'||flag'0')
{
cout"輸入有誤,請(qǐng)重新輸入 0~1"endl;
}
else
{
break;
}
}
for(p1=head;p1-next!=pfinished;)//對(duì)鏈表進(jìn)行從大到小排序(這里用冒泡法)
//p1使之總是指向頭結(jié)點(diǎn),pfinished使之總是指向已排序好的最前面的結(jié)點(diǎn)
//ptemp作為中介,保存p2的上一個(gè)結(jié)點(diǎn)
{
for(p2=p1;p2-next!=pfinished;)
{
if(*((p2-math)+num-'0')*((p2-next-math)+num-'0'))//p2的值小于p2-next的值,交換 ptemp p2 p2-next
{
if(p2==p1)//頭結(jié)點(diǎn)要交換
{
p1=p2-next;
p2-next=p1-next;
p1-next=p2;
ptemp=p1;
}
else
{
ptemp-next=p2-next;
ptemp=p2-next;
p2-next=ptemp-next;
ptemp-next=p2;
}
}
else//不需要交換,則p2、ptemp前進(jìn)1位
{
ptemp=p2;
p2=p2-next;
}
}
pfinished=p2;
}
if(flag=='1')
{
p1=reverse(p1);
}
pri_whole_link(p1);
cout"##########################信息顯示完畢#########################\n";
return p1;
}
void free_link(STUDENT *head)
//釋放鏈表空間,如果head,什么都不做
{
STUDENT *p1,*p2;
for(p1=head;p1;p1=p2)
{
p2=p1-next;//先保存,否則
free(p1);//free后 p1-next數(shù)據(jù)丟失
}
}
這是數(shù)據(jù)結(jié)構(gòu)中標(biāo)準(zhǔn)的線性表插入程序,但是它不是真正的c語(yǔ)言,而是類c哦。
status Insertlist(Sqlist L,int i,Elemtype e){
Elemtype *p; //在這里定義了一個(gè)*p的指針,目的是找到鏈表中每個(gè)結(jié)點(diǎn)的首地址就可以了,不用找一個(gè)結(jié)點(diǎn)的所用地址啊
int j;
if(L.length==L.listsize) //L.listsize是代表的表的上限值,是事先設(shè)定好的
printf("內(nèi)存分配空間已不夠,請(qǐng)重新分配:\n");
p=L.elem;//這條語(yǔ)句應(yīng)該寫在下一條語(yǔ)句的后面,也就是分配后的地址給到臨時(shí)指針變量p中
L.elem=(Elemtype *)realloc(p,(LISTSIZE+L.listsize)*sizeof(Elemtype));
//這條語(yǔ)句是想一下子分配足夠大的線性表空間,realloc在C中不認(rèn)可的,實(shí)現(xiàn)時(shí)還要用malloc,這里只是設(shè)計(jì)實(shí)現(xiàn)的,而分配成功后L.elem只是得到分配單元的首地址,不成功則是空值。
if(!p){
printf("分配空間失敗");
exit(0);
}
L.elem=p;//這條語(yǔ)句應(yīng)該沒(méi)用吧
L.length++;//這條語(yǔ)句應(yīng)該放在成功插入的后面,也就是return 1;語(yǔ)句之前才對(duì)
L.listsize=L.listsize+LISTSIZE_INCE;
if(i1||iL.length){ //這里用到的是運(yùn)算符||,代表是“或”,也就是說(shuō)i1代表輸入時(shí)誤操作造成,而iL.length代表輸入的位置超出表中數(shù)據(jù)的個(gè)數(shù),位置找不到。
printf("插入位置輸入不正確,請(qǐng)重新操作:\n");
return 0;//代表插入失敗
}
else{
for(j=L.length-1;j=i;j--)//從i到最后表尾順次下移,騰出i的位置
L.elem[j+1]=L.elem[j];
L.elem[i]=e;//將數(shù)據(jù)插入到i的位置中
return 1;//代表插入成功
}
return 1;
}
網(wǎng)頁(yè)名稱:c語(yǔ)言線性表插入排序函數(shù),c線性表的順序創(chuàng)建
當(dāng)前網(wǎng)址:http://chinadenli.net/article22/hesocc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站導(dǎo)航、小程序開發(fā)、網(wǎng)站營(yíng)銷、網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)