From fefba3e4af914bb914aaaa389f5d033306e6a780 Mon Sep 17 00:00:00 2001 From: EliasFleckenstein03 Date: Mon, 28 Sep 2020 15:36:11 +0200 Subject: Still unfinished --- scout.c | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) (limited to 'scout.c') diff --git a/scout.c b/scout.c index b9a2170..78f0774 100644 --- a/scout.c +++ b/scout.c @@ -1,4 +1,5 @@ #include +#define __LIBSCOUT_INTERNAL__ #include "scout.h" typedef struct scnode scnode; @@ -20,16 +21,35 @@ scway *scaddway(scnode *from, const scnode *to, int len) return way; } -scwaypoint *__scallocwayp(const scnode *node, scway *way) +scwaypoint *scout(const scnode *from, const scnode *to, scwaypoint *stack) +{ + scwaypoint *wayp = NULL; + if (from == to) + return __scallocwayp(from, NULL); + for (scway *way = from->way; way != NULL; way = way->alt) { + scwaypoint *stackend; + if ((stackend = __scstackfindgetend(stack, way)) == NULL) + continue; + scwaypoint *twayp = __scallocwayp(from, way); + stackend->nxt = twayp; + scwaypoint *nwayp = scout(way->lto, to, stack) + if (wayp && wayp->len <= (twayp->len = __scstackgetlen(twayp))) + __scstackfree(wayp); + wayp = twayp; + } + return wayp; +} + +scwaypoint *__scallocwayp(const scnode *node, const scway *way) { scwaypoint *wayp = malloc(sizeof(scwaypoint)); wayp->nod = node; wayp->way = way; wayp->nxt = NULL; - wayp->len = 0; + wayp->len = way->len; } -scwaypoint *__scstackfindgetend(scwaypoint *stack, scway *way) +scwaypoint *__scstackfindgetend(scwaypoint *stack, const scway *way) { scwaypoint *asptr, *sptr; for (asptr = stack; asptr != NULL; sptr = asptr, asptr = asptr->nxt) @@ -43,25 +63,3 @@ void __scstackfree(scwaypoint *stack) for (scwaypoint *sptr = stack; sptr != NULL; sptr = sptr->nxt) free(sptr); } - -int __scstackgetlen(scwaypoint *stack) -{ - for (scwaypoitn) -} - -scwaypoint *scout(const scnode *from, const scnode *to, scwaypoint *stack) -{ - scwaypoint *wayp = NULL; - if (from == to) - return __scallocwayp(from, NULL); - for (scway *way = from->way; way != NULL; way = way->alt) { - scwaypoint *stackend; - if ((stackend = __scstackfindgetend(stack, way)) == NULL) - continue; - - if (wayp && wayp->len <= (tway->len = __scstackgetlen(tway))) - __scstackfree(wayp); - wayp = twayp; - } - return wayp; -} -- cgit v1.2.3