題目:已知無向圖採用鄰接表存儲方式,試寫出刪除邊(i,j)的算法。
在這裏插入代碼片
voidDeletEdge(AdjListg,inti,int j){//在用鄰接表方式存儲的無向圖g中,刪除邊(i,j)
p=g[i].firstarc;pre=null; //刪頂點i的邊結點(i,j),pre是前驅指針
while(p)
if(p->adjvex==j){
if(pre==null)
g[i].firstarc=p->next;
elsepre->next=p->next;free(p);
}//釋放結點空間。
else{ pre=p;p=p->next; } //沿鏈表繼續查找
p=g[j].firstarc;pre=null; //刪頂點j的邊結點(j,i),pre是前驅指針
while(p)
if(p->adjvex==i){
if( pre==null )
g[j].firstarc=p->next;
else pre->next=p->next;free(p);
}//釋放結點空間。
else{ pre=p;p=p->next; } //沿鏈表繼續查找
}