//在用鄰接表方式儲存的無向圖g中,刪除邊(i,j) void DeletEdge(AdjList g,int i,j) { //先刪除定點i的邊(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; else pre->next=p->next; free(p);//釋放結點空間 } else { pre=p; p=p->next;//沿連結串列繼續查詢 } //刪頂點j 的邊結點(j,i) p=g[j].firstarc; pre=null; 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;//沿連結串列繼續查詢 } }// DeletEdge
//在用鄰接表方式儲存的無向圖g中,刪除邊(i,j) void DeletEdge(AdjList g,int i,j) { //先刪除定點i的邊(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; else pre->next=p->next; free(p);//釋放結點空間 } else { pre=p; p=p->next;//沿連結串列繼續查詢 } //刪頂點j 的邊結點(j,i) p=g[j].firstarc; pre=null; 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;//沿連結串列繼續查詢 } }// DeletEdge