99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

c語言鄰接表的輸出函數(shù) c語言鄰接表的深度優(yōu)先遍歷

C語言中,輸出函數(shù)有哪些?

C語言輸入輸出函數(shù)有很多,標(biāo)準(zhǔn)I/O函數(shù)中包含了如下幾個常用的函數(shù):

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供桐城網(wǎng)站建設(shè)、桐城做網(wǎng)站、桐城網(wǎng)站設(shè)計、桐城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、桐城企業(yè)網(wǎng)站模板建站服務(wù),10年桐城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.

int

scanf(const

char

*format,

arg_list)

scanf主要從標(biāo)準(zhǔn)輸入流中獲取參數(shù)值,format為指定的參數(shù)格式及參數(shù)類型,如scanf("%s,%d",str,icount);

它要求在標(biāo)準(zhǔn)輸入流中輸入類似"son

of

bitch,1000"這樣的字符串,同時程序會將"son

of

bitch"給str,1000給icount.

scanf函數(shù)的返回值為int值,即成功賦值的個數(shù),在上例中如果函數(shù)調(diào)用成功,則會返回2,所以我們在寫程序時,可以通過

語句if(scanf("%s,%d",str,icount)

!=

2){...}來判斷用戶輸入是否正確.

int

printf(const

char

*format,

arg_list)

printf主要是將格式化字符串輸出到標(biāo)準(zhǔn)輸出流中,在stdio.h頭文件中定義了標(biāo)準(zhǔn)的輸入和輸出,分別是stdin,stdout.

arg_list可以是變量名,也可以是表達(dá)式,但最終都會以值的形式填充進(jìn)format中.

int

getc(FILE

*fp)

getc主要是從文件中讀出一個字符.常用的判斷文件是否讀取結(jié)束的語句為:(ch

=

getc(fp))

!=

EOF.EOF為文件結(jié)束標(biāo)志,

定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當(dāng)fp為stdin

時,getc(stdin)就等同于getchar()了.

int

putc(int

ch,FILE

*fp)

putc主要是把字符ch寫到文件fp中去.如果fp為stdout,則putc就等同于putchar()了.

int

getchar(void)

getchar主要是從標(biāo)準(zhǔn)輸入流讀取一個字符.默認(rèn)的標(biāo)準(zhǔn)輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字符時又

涉及到緩沖的問題,所以并不是在屏幕中敲上一個字符程序就會運行,一般是通過在屏幕上敲上回車鍵,然后將回車前的字符

串放在緩沖區(qū)中,getchar就是在緩沖區(qū)中一個一個的讀字符.當(dāng)然也可以在while循環(huán)中指定終止字符,如下面的語句:

while

((c

=

getchar())

!=

'#')這是以#來結(jié)束的.

int

putchar(int

ch)

putchar(ch)主要是把字符ch寫到標(biāo)準(zhǔn)流stdout中去.

char

*

gets(char

*str)

gets主要是從標(biāo)準(zhǔn)輸入流讀取字符串并回顯,讀到換行符時退出,并會將換行符省去.

int

puts(char

*str)

puts主要是把字符串str寫到標(biāo)準(zhǔn)流stdout中去,并會在輸出到最后時添加一個換行符.

char

*fgets(char

*str,

int

num,

FILE

*fp)

str是存放讀入的字符數(shù)組指針,num是最大允許的讀入字符數(shù),fp是文件指針.fgets的功能是讀一行字符,該行的字符數(shù)

不大于num-1.因為fgets函數(shù)會在末尾加上一個空字符以構(gòu)成一個字符串.另外fgets在讀取到換行符后不會將其省略.

int

fputs(char

*str,

file

*fp)

fputs將str寫入fp.fputs與puts的不同之處是fputs在打印時并不添加換行符.

int

fgetc(FILE

*fp)

fgetc從fp的當(dāng)前位置讀取一個字符.

int

fputc(int

ch,

file

*fp)

fputc是將ch寫入fp當(dāng)前指定位置.

int

fscanf(FILE

*fp,

char

*format,...)

fscanf按照指定格式從文件中出讀出數(shù)據(jù),并賦值到參數(shù)列表中.

int

fprintf(FILE

*fp,

char

*format,...)

fprintf將格式化數(shù)據(jù)寫入流式文件中.

就高手幫幫忙,寫一個以鄰接表形式構(gòu)建圖并輸出的的函數(shù),感激不盡吶!(C語言版的,最好是結(jié)構(gòu)體形式)

沒人理你……

我找不到簡單的版本的……

只找到一個還算簡單的……

#include?stdio.h

#include?stdlib.h

#include?malloc.h

#include?ctype.h

#define?MaxVerNum?50

#define?OK?1

#define?NULL?0

typedef?int?Status;

int?visited[MaxVerNum];

typedef?struct?Arcnode{?????

int?adjvex;

struct?Arcnode?*next;

int?info;

}ArcNode;

typedef?struct?vnode{

char?data;

ArcNode?*firstedge;

}VNode;

typedef?VNode?AdjList[MaxVerNum];

typedef?struct?{

AdjList?adjlist;

int?vexnum,arcnum;

}?ALGraph;?

Status?Visit(char?e)//輸出一個字母

{

printf("%2c",e);

return?OK;

}

void?Get(char?*e)//輸入一個字母

{

scanf("%c",e);

while(!('A'?=?*e??*e=?'Z')||('a'?=?*e??*e?=?'z'))

scanf("%c",e);

}

void?TGet(int?*e)//輸入一個數(shù)字

{

scanf("%d",e);

while(scanf("%d",?e)?=?0)

{??

getchar();

}

}

void?InIt(ALGraph?*G,int?S[])//數(shù)組初始化

{

for(int?i=0;iG-vexnum;i++)

S[i]=0;

}

void?FindD(ALGraph?*G,char?arch,int?*a)//?找到頂點的下標(biāo)

{

int?m;

for(m=0;mG-vexnum;m++)

{

if(arch?==?G-adjlist[m].data)

*a?=?m;

}

}

void?Find(ALGraph?*G,char?arch,char?arce,int?*a,int?*b)//?找到弧頭和弧尾的下標(biāo)

{

FindD(G,arch,a);

FindD(G,arce,b);

}

Status?IsBe(ALGraph?*G,char?arch)//?判斷頂點是否已存在

{

for(int?m=0;mG-vexnum;m++)

{

if(arch?==?G-adjlist[m].data)

{

return?OK;

}

}

return?0;

}//IsBe

Status?AIsBe(ALGraph?*G,int?i,int?j)?//判斷弧是否存在

{

ArcNode?*s;

s?=?G-adjlist[i].firstedge;

while(s)

{

if(s-adjvex?==?j)

{

return?OK;

}

s?=?s-next;

}

return?0;

}//AIsBe

Status?GetIn(ALGraph?*G,char?arch,char?arce)?//得到弧的權(quán)值

{

int?i,j;

ArcNode?*s;

Find(G,arch,arce,i,j);

s?=?G-adjlist[i].firstedge;

while(s)

{

if(s-adjvex?==?j)

{

return?(s-info);

}

s?=?s-next;

}

return?0;

}//AIsBe

void?CreatALGraph(ALGraph?*G)//???????????建立圖的鄰接表?

{

int?i,j,k,m;

char?a,arch,arce;

ArcNode?*s;

printf("請輸入頂點數(shù):");

scanf("%d",G-vexnum);???

printf("請輸入弧的條數(shù):");

scanf("%d",G-arcnum);?

printf("下面請輸入圖中的%d個頂點:\n",G-vexnum);

for(i=0;iG-vexnum;i++)

{

fflush(stdin);

printf("輸入第%d個頂點:",i+1);

Get(a);

if(!IsBe(G,a))

{

G-adjlist[i].data?=?a;

G-adjlist[i].firstedge?=?NULL;

}

else

{

printf("頂點%c已存在,請重新",a);

i--;

}

}

printf("下面請輸入圖中的%d條弧:\n",G-arcnum);

for(k=0;kG-arcnum;k++)

{

fflush(stdin);

printf("輸入第%d條弧:",k+1);

Get(arch);Get(arce);TGet(m);

Find(G,arch,arce,i,j);

if(!AIsBe(G,i,j))

{

fflush(stdin);

s=(ArcNode?*)malloc(sizeof(ArcNode));

s-adjvex?=?j;

s-info?=?m;

s-next=G-adjlist[i].firstedge;

G-adjlist[i].firstedge?=?s;

}

else

{

printf("弧%c,%c已存在,請重新",arch,arce);

k--;

}

}

printf("圖的鄰接表儲存結(jié)構(gòu)創(chuàng)建成功!\n");

}//CreatALGraph

void?ACreateALGraph(FILE?*fp,ALGraph?*G)//???????????從文件讀取圖的鄰接表?

{

int?i,j,k,m;

char?a,arch,arce;

ArcNode?*s;

fscanf(fp,?"%d",?G-vexnum);

fscanf(fp,?"%d",?G-arcnum);

for(i=0;iG-vexnum;i++)

{

fflush(stdin);

fscanf(fp,?"%c",?a);

G-adjlist[i].data?=?a;

G-adjlist[i].firstedge?=?NULL;

}

for(k=0;kG-arcnum;k++)

{

fscanf(fp,?"%c",?arch);

fscanf(fp,?"%c",?arce);

fscanf(fp,?"%d",?m);

Find(G,arch,arce,i,j);

s=(ArcNode?*)malloc(sizeof(ArcNode));

s-adjvex?=?j;

s-info?=?m;

s-next=G-adjlist[i].firstedge;

G-adjlist[i].firstedge?=?s;

}

}//ACreateALGraph

void?save(ALGraph?*G)//保存文件

{

FILE?*fp;

int?i,j,k;

ArcNode?*p;

//?打開文件

if((fp=fopen("AL.dat",?"wb"))==NULL)

{

printf("數(shù)據(jù)文件打開失敗,保存不成功,程序異常退出!\n");

exit(-1);

}

fprintf(fp,?"%d",?G-vexnum);

fprintf(fp,?"?");

fprintf(fp,?"%d",?G-arcnum);

for(i=0;iG-vexnum;i++)????

{

fprintf(fp,?"%c",?G-adjlist[i].data);

}

for(i=0;iG-vexnum;i++)????

{

p?=?G-adjlist[i].firstedge;

while(p?!=?NULL)

{

j?=?p-adjvex;

k?=?p-info;

fprintf(fp,?"%c",?G-adjlist[i].data);

fprintf(fp,?"%c",?G-adjlist[j].data);

fprintf(fp,?"%d",?k);

p?=?p-next?;

}

}

//?關(guān)閉文件

fclose(fp);

printf("圖中的數(shù)據(jù)已經(jīng)成功寫入文件!\n");

}//save

void?Traverse(ALGraph?*G)???//輸出鄰接表

{

int?i,j,k;ArcNode?*p;

for(i=0;iG-vexnum;i++)????

{

printf("%2d|",i);

Visit(G-adjlist[i].data);?????

p?=?G-adjlist[i].firstedge;

while(p?!=?NULL)

{

j?=?p-adjvex;

k?=?p-info;?

printf("?★--%2d?%2d",j,k);

p?=?p-next?;

}

printf("?△\n");

}

}//Traverse

void?DFSM(ALGraph?*G,int?i)//深度優(yōu)先遍歷

{

ArcNode?*p;

Visit(G-adjlist[i].data);

visited[i]=1;????????????????

p=G-adjlist[i].firstedge;?????????

while(p)

{

if(!?visited[p-adjvex])

?DFSM(G,p-adjvex);

?p?=?p-next;

}

}//DFSM

void?DFSTraverse(ALGraph?*G)

{

InIt(G,visited);

for(int?j=0;jG-vexnum;j++)

if(!visited[0])

DFSM(G,0);?

}//DFSTraverse

void?BFSTraverse(ALGraph?*G)?????????//廣度優(yōu)先遍歷

{

int?k=0;

int?i,f=0,r=0;

ArcNode?*p;

int?cq[MaxVerNum];

InIt(G,visited);

for(i=0;i=G-vexnum;i++)

cq[i]=-1;

Visit(G-adjlist[k].data);

visited[k]=1;

cq[f]=k;

while(cq[r]!=-1)

{

i=cq[r];

r=r+1;

p=G-adjlist[i].firstedge;

while(p)

{

if(!visited[p-adjvex])?

{

Visit(G-adjlist[p-adjvex].data);

visited[p-adjvex]=1;

f=f+1;?cq[f]=p-adjvex;

}

p=p-next;

}

}???????????????????????????????

}??????//?BFSTraverse

Status?InArc(ALGraph?*G,int?i,int?j,int?k)???//插入一條弧

{

ArcNode?*s;

s=(ArcNode?*)malloc(sizeof(ArcNode));

s-adjvex?=?j;

s-info?=?k;

s-next=G-adjlist[i].firstedge;

G-adjlist[i].firstedge?=?s;

return?OK;

}//InArc

Status?InAr(ALGraph?*G)???//插入一條弧

{

int?i,j,k;

char?arch,arce;

printf("輸入要增加的弧弧尾,弧頭,權(quán)值:\n");

fflush(stdin);

Get(arch);Get(arce);TGet(k);

Find(G,arch,arce,i,j);

if(!AIsBe(G,i,j))

{

InArc(G,i,j,k);

printf("弧%c,%c,%d添加成功!\n",arch,arce,k);

return?OK;

}

else

{

k?=?GetIn(G,arch,arce);

printf("已存在弧%c,%c,%d,請重新",arch,arce,k);

InAr(G);

return?OK;

}

}//InAr

Status?DeArc(ALGraph?*G,int?i,int?j)?//刪除一條弧

{

ArcNode?*s,*ss;

ss?=?G-adjlist[i].firstedge;

if(ss-adjvex?==?j)

{

G-adjlist[i].firstedge?=?ss-next?;

free(ss);

return?OK;

}

else

{

while(ss-next)

{

if(ss-next-adjvex?!=?j)

{

ss?=?ss-next?;

}

else

{

s?=?ss-next?;

ss-next?=?s-next?;

free(s);

return?OK;

}

}

}

return?OK;

}//DeArc

Status?DelArc(ALGraph?*G)

{

int?i,j,h;

char?arch,arce;

fflush(stdin);

printf("輸入要刪除的弧弧尾,弧頭:\n");

Get(arch);Get(arce);h?=?GetIn(G,arch,arce);

Find(G,arch,arce,i,j);

if(AIsBe(G,i,j))

{

DeArc(G,i,j);

printf("弧%c,%c,%d已被刪除\n",arch,arce,h);

return?OK;

}

else

{

printf("弧%c,%c不存在,請重新",arch,arce);

DelArc(G);

return?0;

}

}//DelArc

Status?ModifyArc(ALGraph?*G)???//修改一條弧

{

int?i,j,k,i2,j2,k2,m?=?1;

char?arch,arce,arch2,arce2;

ArcNode?*s;

printf("輸入要修改的弧弧尾,弧頭:\n");

fflush(stdin);

Get(arch);Get(arce);k=GetIn(G,arch,arce);

Find(G,arch,arce,i,j);

if(AIsBe(G,i,j))

{

while(m)

{

printf("輸入修改后的弧弧尾,弧頭,權(quán)值:\n");

fflush(stdin);

Get(arch2);Get(arce2);TGet(k2);

Find(G,arch2,arce2,i2,j2);

if(!AIsBe(G,i2,j2)||(i?==?i2j?==j2))

{

if(i?!=?i2)

{

DeArc(G,i,j);

InArc(G,i2,j2,k2);

}

else

{

s?=?G-adjlist[i].firstedge;

while(s-adjvex?!=?j)

{

s?=?s-next?;

}

s-adjvex?=?j2;

s-info?=?k2;

}

printf("已將弧%c,%c,%d修改為%c,%c,%d!\n",arch,arce,k,arch2,arce2,k2);

m?=?0;

}

else

{

k2?=?GetIn(G,arch,arce);

printf("已存在弧%c,%c,%d,請重新",arch2,arce2,k2);

}

}

return?OK;

}

else

{

printf("弧%c,%c不存在,請重新",arch,arce);

ModifyArc(G);

return?OK;

}

}//ModifyArc

Status?InTop(ALGraph?*G)?//增加一個頂點

{

int?i;char?a;

printf("輸入要添加的頂點:\n");

fflush(stdin);

Get(a);

if(!IsBe(G,a))

{

i?=?G-vexnum++;

G-adjlist[i].data?=?a;

G-adjlist[i].firstedge?=?NULL;

printf("已成功將頂點%c加入圖中!",a);

return?OK;

}

else

{

printf("頂點%c已存在,請重新",a);

InTop(G);

return?OK;

}

}//InTop

Status?DeTop(ALGraph?*G)?//刪除一個頂點

{

int?i,m;char?a;

ArcNode?*s;

printf("輸入要刪除的頂點:\n");

fflush(stdin);

Get(a);

if(IsBe(G,a))

{

FindD(G,a,m);

for(i?=?0;i??G-vexnum?;i++)

{

if(AIsBe(G,i,m))

DeArc(G,i,m);

}

for(i?=?m;i??(G-vexnum)-1?;i++)

{

G-adjlist[i].data?=?G-adjlist[i+1].data;

G-adjlist[i].firstedge?=?G-adjlist[i+1].firstedge?;

}

G-vexnum--;

for(i?=?0;i??G-vexnum?;i++)

{

s?=?G-adjlist[i].firstedge;

if(s?!=?NULL)

while(?s-next!=?NULL)

{

if(s-adjvex?=?m)

(s-adjvex)--;

s?=?s-next?;

}

}

printf("成功將頂點%c刪除!",a);

return?OK;

}

else

{

printf("頂點%c不存在,請重新",a);

DeTop(G);

return?OK;

}

}//DeTop

Status?ModifyTop(ALGraph?*G)

{

int?m;

char?a,b;

printf("輸入要修改的頂點:");

fflush(stdin);

Get(a);

if(IsBe(G,a))

{

FindD(G,a,m);

printf("請輸入修改后的頂點:");

Get(b);

while(IsBe(G,b))

{

printf("不能修改為已有頂點!請重新輸入:");

Get(b);

}

G-adjlist[m].data?=?b;

printf("已將頂點%c修改為%c",a,b);

return?OK;

}

else

{

printf("頂點%c不存在,請重新",a);

ModifyTop(G);

}

return?OK;

}//ModifyTop

Status?Destroy(ALGraph?*G)

{

for(int?i=0;iG-vexnum;i++)

{

G-adjlist[i].data?=0;

G-adjlist[i].firstedge?=NULL;

}

G-arcnum?=?0;

G-vexnum?=?0;

return?OK;

}//Destroy

void?menu()???????????????????????????????

{

printf("\n");

printf("\t***********0233唐明鄰接表****************\n");

printf("\t*????????1??創(chuàng)建圖的鄰接表儲存結(jié)構(gòu)??????*\n");

printf("\t*????????2??讀取圖的鄰接表儲存結(jié)構(gòu)??????*\n");

printf("\t*????????3??儲存圖的鄰接表儲存結(jié)構(gòu)??????*\n");

printf("\t*????????4??輸出鄰接表數(shù)據(jù)??????????????*\n");

printf("\t*????????5??深度優(yōu)先遍歷圖(DFS)???????*\n");

printf("\t*????????6??廣度優(yōu)先遍歷圖(BFS)???????*\n");

printf("\t*????????7??弧的修改????????????????????*\n");

printf("\t*????????8??頂點的修改??????????????????*\n");

printf("\t*????????9??銷毀整個圖??????????????????*\n");

printf("\t*????????10?清??????????屏??????????????*\n");

printf("\t*????????0??退??出??程??序??????????????*\n");

printf("\t*****************************************\n");

printf("\t請選擇菜單項:");

}

int?main()

{

ALGraph?*G;

G=(ALGraph?*)malloc(sizeof(ALGraph));

FILE?*fp;

int?choice,choice2,choice3;

int?is?=?0;

while(1)

{

start:

menu();

fflush(stdin);

scanf("%d",?choice);

switch(choice)

{

case?1:

if(!is)

{

CreatALGraph(G);

is?=?1;

}

else

{

printf("請先將圖銷毀,再創(chuàng)建新圖");

}

break;

case?2:

if(!is)

{

fp?=?fopen("AL.dat",?"r");

if(fp==NULL)

{

fp?=?fopen("AL.dat",?"w+");

printf("尚未建立AL.dat,圖創(chuàng)建失敗!\n");

printf("現(xiàn)已建立AL.dat,請先存入數(shù)據(jù)!\n");

break;

}

ACreateALGraph(fp,G);

fclose(fp);

is?=?1;

printf("圖的鄰接表儲存結(jié)構(gòu)創(chuàng)建成功!\n");

}

else

{

printf("請先將圖銷毀,再創(chuàng)建新圖");

}

break;

case?3:

save(G);

break;

case?4:

if(is)

{

printf("鄰接表中的數(shù)據(jù)如下:\n");

printf("下標(biāo)???頂點????鏈表結(jié)點(弧頭下標(biāo),弧的權(quán)值,指針)\n");

Traverse(G);

}

else

printf("尚未創(chuàng)建圖,請先創(chuàng)建");

break;

case?5:

if(is)

{

printf("深度優(yōu)先遍歷如下\n");

DFSTraverse(G);

}

else

printf("尚未創(chuàng)建圖,請先創(chuàng)建");

break;

case?6:

if(is)

{

printf("廣度優(yōu)先遍歷如下\n");

BFSTraverse(G);

}

else

printf("尚未創(chuàng)建圖,請先創(chuàng)建");

break;

case?7:

if(is){

printf("(1?增加?2?刪除?3?修改)");

scanf("%d",choice2);

switch(choice2)

{

case?1:

InAr(G);

goto?start;break;

case?2:

DelArc(G);

goto?start;break;

case?3:

ModifyArc(G);

goto?start;break;

default: goto?start;break;}

}

else

printf("尚未創(chuàng)建圖,請先創(chuàng)建");

break;

case?8:

if(is){

printf("(1?增加?2?刪除?3?修改)");

scanf("%d",choice3);

switch(choice3)

{

case?1:

InTop(G);

goto?start;break;

case?2:

DeTop(G);

goto?start;break;

case?3:

ModifyTop(G);

goto?start;break;

default: goto?start;break;}

}

else

printf("尚未創(chuàng)建圖,請先創(chuàng)建");

break;

case?9:

if(is)

{

Destroy(G);

is?=?0;

printf("圖已銷毀!");

}

else

printf("尚未創(chuàng)建圖,請先創(chuàng)建");

break;

case?10:

system("cls");

break;

case?0:

exit(0);

break;

default:

printf("\t您輸入的菜單項不存在,請重新選擇!\n");

}

}

return?OK;

}

這是在我大一的草稿文件中找到的……完美的被我直接放U盤上,交了之后刪了。不過你應(yīng)該夠用了,如果嫌功能多了……自己刪吧,我記得我交上去的有十幾項選項,幾十條功能。你第一次運行,要么下我傳上去的,要么你先輸入圖,再儲存。因為沒有AL.dat文件所以不能直接讀取。

在C語言中編程實現(xiàn)建立無向圖的鄰接表,輸出某個點的鄰接點~!

用矩陣表示無向圖的,設(shè)有M個節(jié)點,則建立一個MXM矩陣,對每個頂點添加它的鄰接點,即每行中對于有標(biāo)記的列為該行頂點的鄰接點。

用鄰接表表示的圖的輸出(PrintGraph)的算法(C語言)

單鏈表類中的輸出流函數(shù)重載,輸出鏈表

圖類中再次重載輸出流函數(shù)。

一次頂點表的循環(huán),輸出。

結(jié)果:start,dest,weight,。。。

網(wǎng)頁標(biāo)題:c語言鄰接表的輸出函數(shù) c語言鄰接表的深度優(yōu)先遍歷
瀏覽路徑:http://www.yijiale78.com/article40/dophdeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈品牌網(wǎng)站制作建站公司全網(wǎng)營銷推廣網(wǎng)站改版動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)