Improve efficiency of linked list search. (See BUG 783).
This commit is contained in:
parent
b09778d479
commit
8d76a9a56a
|
|
@ -20,7 +20,7 @@ CKTdltNod(CKTcircuit* ckt, CKTnode* node)
|
||||||
int
|
int
|
||||||
CKTdltNNum(CKTcircuit* ckt, int num)
|
CKTdltNNum(CKTcircuit* ckt, int num)
|
||||||
{
|
{
|
||||||
CKTnode* n, * prev, * node, * sprev;
|
CKTnode* n, * prev, * node;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
if (!ckt->prev_CKTlastNode->number || num <= ckt->prev_CKTlastNode->number) {
|
if (!ckt->prev_CKTlastNode->number || num <= ckt->prev_CKTlastNode->number) {
|
||||||
|
|
@ -30,12 +30,11 @@ CKTdltNNum(CKTcircuit* ckt, int num)
|
||||||
|
|
||||||
prev = NULL;
|
prev = NULL;
|
||||||
node = NULL;
|
node = NULL;
|
||||||
sprev = NULL;
|
|
||||||
|
|
||||||
for (n = ckt->CKTnodes; n; n = n->next) {
|
for (n = ckt->CKTnodes; n; n = n->next) {
|
||||||
if (n->number == num) {
|
if (n->number == num) {
|
||||||
node = n;
|
node = n;
|
||||||
sprev = prev;
|
break;
|
||||||
}
|
}
|
||||||
prev = n;
|
prev = n;
|
||||||
}
|
}
|
||||||
|
|
@ -45,14 +44,14 @@ CKTdltNNum(CKTcircuit* ckt, int num)
|
||||||
|
|
||||||
ckt->CKTmaxEqNum -= 1;
|
ckt->CKTmaxEqNum -= 1;
|
||||||
|
|
||||||
if (!sprev) {
|
if (!prev) {
|
||||||
ckt->CKTnodes = node->next;
|
ckt->CKTnodes = node->next;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sprev->next = node->next;
|
prev->next = node->next;
|
||||||
}
|
}
|
||||||
if (node == ckt->CKTlastNode)
|
if (node == ckt->CKTlastNode)
|
||||||
ckt->CKTlastNode = sprev;
|
ckt->CKTlastNode = prev;
|
||||||
|
|
||||||
error = SPfrontEnd->IFdelUid(ckt, node->name, UID_SIGNAL);
|
error = SPfrontEnd->IFdelUid(ckt, node->name, UID_SIGNAL);
|
||||||
tfree(node);
|
tfree(node);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue