1. 程式人生 > >真題2015 無向圖採用鄰接表儲存方式,刪除邊

真題2015 無向圖採用鄰接表儲存方式,刪除邊

題目:已知無向圖採用鄰接表儲存方式,試寫出刪除邊(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; } //沿連結串列繼續查詢
}