Improve efficiency of linked list search. (See BUG 783).

This commit is contained in:
Giles Atkinson 2025-05-03 08:55:29 +01:00
parent b09778d479
commit 8d76a9a56a
1 changed files with 5 additions and 6 deletions

View File

@ -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);