您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

01 訂閱轉換服務地址是什么數據結構(設計算法,將一個無向圖的鄰接矩陣轉換為鄰接表.求大神。這是數據結構里的問題。)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-05 16:30:40【】0人已围观

简介設計算法,將一個無向圖的鄰接矩陣轉換為鄰接表.求大神。這是數據結構里的問題。typedefstruct{intvertex[m];intedge[m][m];}gadjmatrix;typedefst

設計算法,將一個無向圖的鄰接矩陣轉換為鄰接表.求大神。這是數據結構里的問題。

typedef struct { int vertex[m]; int edge[m][m];}gadjmatrix;

typedef struct node1{ int info;int adjvertex; struct node1 *nextarc;}glinklistnode;

typedef struct node2{ int vertexinfo;glinklistnode *firstarc;}glinkheadnode;

void adjmatrixtoadjlist(gadjmatrix g1[ ],glinkheadnode g2[ ])

{

int i,j; glinklistnode *p;

for(i=0;i<=n-1;i++) g2[i].firstarc=0;

for(i=0;i<=n-1;i++) for(j=0;j<=n-1;j++)

if (g1.edge[i][j]==1)

{

p=(glinklistnode *)malloc(sizeof(glinklistnode));p->adjvertex=j;

p->nextarc=g[i].firstarc; g[i].firstarc=p;

p=(glinklistnode *)malloc(sizeof(glinklistnode));p->adjvertex=i;

p->nextarc=g[j].firstarc; g[j].firstarc=p;

擴展資料:

數據結構算法注意事項。

算法的設計取決于數據(邏輯)結構,而算法的實現依賴于采用的存儲結構。數據的存儲結構實質上是它的邏輯結構在計算機存儲器中的實現,為了全面的反映一個數據的邏輯結構,它在存儲器中的映象包括兩方面內容,即數據元素之間的信息和數據元素之間的關系。

不同數據結構有其相應的若干運算。數據的運算是在數據的邏輯結構上定義的操作算法,如檢索、插入、刪除、更新和排序等。

數據的運算是數據結構的一個重要方面,討論任一種數據結構時都離不開對該結構上的數據運算及其實現算法的討論。

數據結構不同于數據類型,也不同于數據對象,它不僅要描述數據類型的數據對象,而且要描述數據對象各元素之間的相互關系。

數據結構中綴表達式3+(5-2)*7,轉換成等價的后綴表達式為

數據結構中綴表達式3+(5-2)*7,轉換成等價的后綴表達式為

后綴表達式:不包含括號,運算符放在兩個運算對象的后面,所有的計算按運算符出現的順序,嚴格從左向右進行

根據定義,可以知道后綴表達式為:

3 5 2 - 7 * +

關于數據結構(Pascal)中綴表達式轉后綴表達式

var

ni,tuo:array[0..10000] of char; { ni是描述入棧,tuo是描述出棧}

nd,td,i,j,k,l:longint; { nd是ni的棧頂,td是tuo的棧頂}

tp:char; { tp讀入字符}

fh:array[0..3,1..2] of char; { fh用于判斷符號的優先級}

function fhpd(ch:char):integer; { 判斷符號優先級}

var i,j:integer;

begin

for i:=0 to 2 do

for j:=1 to 2 do

if ch=fh[i,j] then exit(i);

exit(-1);

end;

begin

fillchar(ni,sizeof(ni),' ');

fillchar(tuo,sizeof(tuo),' ');

fh[1,1]:='+';fh[1,2]:='-';fh[2,1]:='*';fh[2,2]:='/';fh[0,1]:='('; { 全部初始化}

read(tp);

while tp<>'.' do { 當讀入“.”說明中綴表達式讀入完畢}

begin

if (tp=')') then { 如果是‘)’就將最近的一個‘(’之間的符號,全部倒入tuo中,并將‘(’和‘)’去掉}

begin

while ni[nd]<>'(' do

begin

inc(td);

tuo[td]:=ni[nd];

ni[nd]:=' ';

if not(nd=1) then dec(nd); { 防止棧底溢出}

end;

ni[nd]:=' '; { 去掉‘(’}

dec(nd);

end

else begin

if (tp in ['0'..'9']) then begin inc(td);tuo[td]:=tp;end else { 如果是數字,則之間置入tuo中}

begin

if (ni[1]=' ')and(fhpd(tp)<>-1) then begin nd:=1;ni[nd]:=tp; end else { 如果棧為空}

begin

if (ni[1]<>' ')and(fhpd(tp)<>-1) then { 如果棧不為空,且tp為合法符號}

begin

if ((fhpd(tp)>fhpd(ni[nd]))or(tp='(')) then { 如果tp大于ni的棧頂符號,或者tp是‘(’}

begin

inc(nd);

ni[nd]:=tp; { 直接置入ni棧中}

end

else

begin

while (nd<>0)and(not((fhpd(tp)>fhpd(ni[nd])))) do

{ 如果tp小于ni的棧頂符號,就將大于tp的符號倒入tuo中,直到ni的棧頂小于等于tp,就將tp加入ni}

begin

inc(td);

tuo[td]:=ni[nd];

dec(nd);

end;

inc(nd);

ni[nd]:=tp;

end;

end;

end;

end;

end;

read(tp);

end;

while nd<>0 do { 最后將所用ni棧中的符號全部按照正規操作模式,倒入tuo中}

begin

inc(td);

tuo[td]:=ni[nd];

dec(nd);

end;

for i:=1 to td do write(tuo[i],' '); writeln; { 從tuo的棧底開始輸出字符}

readln;readln;

end.

數據結構中綴式中綴表達式改后綴表達式并求值

搞兩個棧,一個存數字,一個存符號,處理一下優先級就可以了。

#include<iostream>

#include<cstdlib>

#include<cstdio>

#include<cstring>

#include<string>

int a[10][10]={ { 3,2,2,3,3},{ 3,3,2,3,3},{ 2,2,2,1,0},{ 3,3,0,3,3},{ 2,2,2,0,1}};

char t[100];

using namespace std;

struct node

{

int h;

char c;

node *p;

};

int pd(char ch)

{

if((ch=='+')||(ch=='-'))return 0;

if((ch=='*')||(ch=='/'))return 1;

if(ch=='(')return 2;

if(ch==')')return 3;

if(ch=='@')return 4;

}

int main()

{

node *r,*q;

int i,l,k=0,v,w,o;

string s;

cin>>s;

l=s.length();

s[l]='@';

l++;

q=new node;

q->c='@';

for(i=0;i<=l-1;i++){

if((s[i]>='0')&&(s[i]<='9')){

t[k]=s[i];

k++;

if((s[i+1]<'0')||(s[i+1]>'9')){

t[k]=' ';

k++;

}

買粉絲ntinue;

}

w=pd(s[i]);

v=pd(q->c);

switch (a[v][w]){

case 1:

q=q->p;

break;

case 2:

r=q;

q=new node;

q->c=s[i];

q->p=r;

break;

case 3:

r=q;

q=new node;

q->c=s[i];

q->p=r;

while(a[v][w]==3){

t[k]=q->p->c;

很赞哦!(99)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:黑龙江省齐齐哈尔昂昂溪区

工作室:小组

Email:[email protected]