📄 n_dim_traversal.c
字号:
#include<stdio.h>#include<malloc.h>#include<varargs.h>#include "n_dim_traversal.h"/* Note: VALTYPE and VALNULL are defined in n_dim_traversal.h */int dimsize=500;void insert_val (LEAFTYPE *, VALTYPE);void insert_val(locn, val) LEAFTYPE *locn; VALTYPE val;{ if (*locn == NULL) { if ((*locn = (LEAFTYPE)malloc(sizeof(LEAFTYPE))) == NULL) { fprintf(stderr, "Cannot allocate memory for list entry\n"); exit(-1); } (*locn)->val = val; (*locn)->next = (LEAFTYPE) NULL; } else { insert_val(&((*locn)->next), val); }}void enter_value(VALTYPE, void **, int, int *);void enter_value(val, list, dims, x) VALTYPE val; void **list; int dims; int *x;{ int i; if (*list == NULL) { if ((*list = (void *)malloc(sizeof(LEAFTYPE)*dimsize)) == NULL) { fprintf(stderr, "Cannot allocate memory!\n"); exit(-1); } if (dims==1) { for (i=0; i<dimsize; i++) { ((LEAFTYPE *) (*list))[i] = VALNULL; } } else { for (i=0; i<dimsize; i++) { ((void **) (*list))[i] = (void *) 0; } } } if ((x[0] < 0) || (x[0] > dimsize)) { fprintf(stderr, "Coordinate entry %d is not between 0 and %d\n", x[0], dimsize); exit(-1); } if (dims==1) { /* This is where the entry is updated. For linked lists, more */ /* code will be required to handle the insertion. (Probably */ /* best done by a function call I would think). */ insert_val(&(((LEAFTYPE *) (*list))[x[0]]), val); } else { enter_value(val, &(((void **) (*list))[x[0]]), dims-1, &(x[1])); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -