n_dim_traversal.c

来自「混沌分析的C语言程序的」· C语言 代码 · 共 72 行

C
72
字号
#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 + =
减小字号Ctrl + -
显示快捷键?