亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? set.c

?? 高階sigma-delta調制器設計matlab工具包, 半波帶濾波器設計工具包
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* set.c -- implements set manipulations needed for quickhull    see README and set.h      copyright (c) 1993-1995 The Geometry Center        */#include <stdio.h>#include <memory.h>#include <string.h>#include "set.h"#include "mem.h"#ifndef qhDEFqhullvoid    qh_errexit(int exitcode, void *, void *);#endif/*----------- internal macros --------------------SETsizeaddr_(set) - return pointer to actual size+1 of set (set CANNOT be NULL!!)    *SETsizeaddr==NULL or e[*SETsizeaddr-1].p==NULL*/#define SETsizeaddr_(set) (&((set)->e[(set)->maxsize].i))/*============ functions in alphabetical order ===================*/  /*-----------------------------------------setaddnth- adds newelem as n'th element of sorted or unsorted set  setp and newelem must be defined  set may be a temp set  nth=0 is first element  errors if nth is out of bounds*/void qh_setaddnth(setT **setp, int nth, void *newelem) {  int *sizep, oldsize, i;  void **oldp, **newp;  if (!*setp || !*(sizep= SETsizeaddr_(*setp))) {    qh_setlarger(setp);    sizep= SETsizeaddr_(*setp);  }  oldsize= *sizep - 1;  if (nth < 0 || nth > oldsize) {    fprintf (qhmem.ferr, "qhull internal error (qh_setaddnth): nth %d is out-of-bounds for set:\n", nth);    qh_setprint (qhmem.ferr, "", *setp);    qh_errexit (qhmem_ERRqhull, NULL, NULL);  }  (*sizep)++;  oldp= SETelemaddr_(*setp, oldsize, void);   /* NULL */  newp= oldp+1;  for (i= oldsize-nth+1; i--; )  /* move at least NULL  */    *(newp--)= *(oldp--);       /* may overwrite *sizep */  *newp= newelem;} /* setaddnth *//*-----------------------------------------setaddsorted- adds an element to a sorted set  setp and newelem must be defined  set may be a temp set  nop if newelem already in set*/void qh_setaddsorted(setT **setp, void *newelem) {  int newindex=0;  void *elem, **elemp;  FOREACHelem_(*setp) {          /* could use binary search instead */    if (elem < newelem)      newindex++;    else if (elem == newelem)      return;    else      break;  }  qh_setaddnth(setp, newindex, newelem);} /* setaddsorted *//*-----------------------------------------setappend- appends an element to a set  set may be a temp set  *setp and newelem may be NULL*/void qh_setappend(setT **setp, void *newelem) {  int *sizep;  void **endp;  if (!newelem)    return;  if (!*setp || !*(sizep= SETsizeaddr_(*setp))) {    qh_setlarger(setp);    sizep= SETsizeaddr_(*setp);  }  *(endp= &((*setp)->e[(*sizep)++ - 1].p))= newelem;  *(++endp)= NULL;} /* setappend *//*-----------------------------------------setappend_set- appends a set to a set  *setp and set may be NULL  setp can not be a temp set*/void qh_setappend_set(setT **setp, setT *setA) {  int *sizep, sizeA, size;  setT *oldset;  if (!setA)    return;  SETreturnsize_(setA, sizeA);  if (!*setp)    *setp= qh_setnew (sizeA);  sizep= SETsizeaddr_(*setp);  if (!(size= *sizep))    size= (*setp)->maxsize;  else    size--;  if (size + sizeA > (*setp)->maxsize) {    oldset= *setp;    *setp= qh_setcopy (oldset, sizeA);    qh_setfree (&oldset);    sizep= SETsizeaddr_(*setp);  }  *sizep= size+sizeA+1;   /* memcpy may overwrite */  if (sizeA > 0)     memcpy((char *)&((*setp)->e[size].p), (char *)&(setA->e[0].p), SETelemsize *(sizeA+1));} /* setappend_set *//*-----------------------------------------setappend2ndlast- makes newelem the next to the last element in set  set must have at least one element, newelem must be defined  set may be a temp set*/void qh_setappend2ndlast(setT **setp, void *newelem) {  int *sizep;  void **endp, **lastp;    if (!*setp || !*(sizep= SETsizeaddr_(*setp))) {    qh_setlarger(setp);    sizep= SETsizeaddr_(*setp);  }  endp= SETelemaddr_(*setp, (*sizep)++ -1, void); /* NULL */  lastp= endp-1;  *(endp++)= *lastp;  *endp= NULL;    /* may overwrite *sizep */  *lastp= newelem;} /* setappend2ndlast *//*-----------------------------------------setcheck- check set for validity*/void qh_setcheck(setT *set, char *typename, int id) {  int maxsize, size;  int waserr= 0;  if (!set)    return;  SETreturnsize_(set, size);  maxsize= set->maxsize;  if (size > maxsize || !maxsize) {    fprintf (qhmem.ferr, "qhull internal error (qh_setcheck): actual size %d of %s%d is greater than max size %d\n",	     size, typename, id, maxsize);    waserr= 1;  }else if (set->e[size].p) {    fprintf (qhmem.ferr, "qhull internal error (qh_setcheck): %s%d (size %d max %d) is not null terminated.\n",	     typename, id, maxsize, size-1);    waserr= 1;  }  if (waserr) {    qh_setprint (qhmem.ferr, "ERRONEOUS", set);    qh_errexit (qhmem_ERRqhull, NULL, NULL);  }} /* setcheck *//*-----------------------------------------setcompact- compact NULLs in an unsorted set  set may be NULLreturns:  updates setnotes:  is faster to swap tail of set into holes, like qh_setdel*/void qh_setcompact(setT *set) {  int size;  void **destp, **elemp, **endp, **firstp;  if (!set)    return;  SETreturnsize_(set, size);  destp= elemp= firstp= SETaddr_(set, void);  endp= destp + size;  while (1) {    if (!(*destp++ = *elemp++)) {      destp--;      if (elemp > endp)	break;    }  }  qh_settruncate (set, destp-firstp);} /* setcompact *//*-----------------------------------------setcopy- copies a sorted or unsorted set into anotherreturns:  new set is actual size of old set plus extra*/setT *qh_setcopy(setT *set, int extra) {  setT *newset;  int size;  if (extra < 0)    extra= 0;  SETreturnsize_(set, size);  newset= qh_setnew(size+extra);  *SETsizeaddr_(newset)= size+1;    /* memcpy may overwrite */  memcpy((char *)&(newset->e[0].p), (char *)&(set->e[0].p), SETelemsize *(size+1));  return (newset);} /* setcopy *//*-----------------------------------------setdel- deletes oldelem from unsorted set.   if found, overwrites newlelem with lastelem   set may be NULL, oldelem must not be NULL;returns:  returns oldelem if it was deleted (use type conversion)notes:  only deletes one copy of oldelem in set*/void *qh_setdel(setT *set, void *oldelem) {  void **elemp, **lastp;  int *sizep;  if (!set)    return NULL;  elemp= SETaddr_(set, void);  while (*elemp != oldelem && *elemp)    elemp++;  if (*elemp) {    sizep= SETsizeaddr_(set);    if (!(*sizep)--)         /*  if was a full set */      *sizep= set->maxsize;  /*     *sizep= (maxsize-1)+ 1 */    lastp= SETelemaddr_(set, *sizep-1, void);    *elemp= *lastp;      /* may overwrite itself */    *lastp= NULL;    return oldelem;  }  return NULL;} /* setdel *//*-----------------------------------------setdellast- return last element of set or NULL (use type conversion)   delete element from set   set may be NULL*/void *qh_setdellast(setT *set) {  int setsize;  /* actually, actual_size + 1 */  int maxsize;  int *sizep;  void *returnvalue;    if (!set || !(set->e[0].p))    return NULL;  sizep= SETsizeaddr_(set);  if ((setsize= *sizep)) {    returnvalue= set->e[setsize - 2].p;    set->e[setsize - 2].p= NULL;    (*sizep)--;  }else {    maxsize= set->maxsize;    returnvalue= set->e[maxsize - 1].p;    set->e[maxsize - 1].p= NULL;    *sizep= maxsize;  }  return returnvalue;} /* setdellast *//*-----------------------------------------setdelnth- deletes nth element from unsorted set   errors if nth invalid  returns the element (use type conversion)*/void *qh_setdelnth(setT *set, int nth) {  void **elemp, **lastp, *elem;  int *sizep;  elemp= SETelemaddr_(set, nth, void);  sizep= SETsizeaddr_(set);  if (!(*sizep)--)         /*  if was a full set */    *sizep= set->maxsize;  /*     *sizep= (maxsize-1)+ 1 */  if (nth < 0 || nth >= *sizep) {    fprintf (qhmem.ferr, "qhull internal error (qh_setaddnth): nth %d is out-of-bounds for set:\n", nth);    qh_setprint (qhmem.ferr, "", set);    qh_errexit (qhmem_ERRqhull, NULL, NULL);  }  lastp= SETelemaddr_(set, *sizep-1, void);  elem= *elemp;  *elemp= *lastp;      /* may overwrite itself */  *lastp= NULL;  return elem;} /* setdelnth *//*-----------------------------------------setdelnthsorted- deletes nth element from sorted set  sort order is undefined  errors if nth invalid  returns the element (use type conversion)  see also: setnew_delnthsorted*/void *qh_setdelnthsorted(setT *set, int nth) {  void **newp, **oldp, *elem;  int *sizep;  sizep= SETsizeaddr_(set);  if (nth < 0 || (*sizep && nth >= *sizep-1) || nth >= set->maxsize) {    fprintf (qhmem.ferr, "qhull internal error (qh_setaddnth): nth %d is out-of-bounds for set:\n", nth);    qh_setprint (qhmem.ferr, "", set);    qh_errexit (qhmem_ERRqhull, NULL, NULL);  }  newp= SETelemaddr_(set, nth, void);  elem= *newp;  oldp= newp+1;  while ((*(newp++)= *(oldp++)))    ; /* copy remaining elements and NULL */  if (!(*sizep)--)         /*  if was a full set */    *sizep= set->maxsize;  /*     *sizep= (max size-1)+ 1 */  return elem;} /* setdelnthsorted *//*-----------------------------------------setdelsorted- deletes oldelem from sorted set  sort order is undefined  set may be NULL  returns oldelem if it was deleted*/void *qh_setdelsorted(setT *set, void *oldelem) {  void **newp, **oldp;  int *sizep;  if (!set)    return NULL;  newp= SETaddr_(set, void);  while(*newp != oldelem && *newp)    newp++;  if (*newp) {    oldp= newp+1;    while ((*(newp++)= *(oldp++)))      ; /* copy remaining elements */    sizep= SETsizeaddr_(set);    if (!(*sizep)--)    /*  if was a full set */      *sizep= set->maxsize;  /*     *sizep= (max size-1)+ 1 */    return oldelem;  }  return NULL;} /* setdelsorted *//*-----------------------------------------setduplicate- duplicate a set of elementsnotes:  use setcopy if retaining old elements*/setT *qh_setduplicate (setT *set, int elemsize) {  void		*elem, **elemp, *newElem;  setT		*newSet;  int		size;    if (!(size= qh_setsize (set)))    return NULL;  newSet= qh_setnew (size);  FOREACHelem_(set) {    newElem= qh_memalloc (elemsize);    memcpy (newElem, elem, elemsize);    qh_setappend (&newSet, newElem);  }  return newSet;} /* setduplicate *//*-----------------------------------------setequal- returns 1 if two sorted sets are equal, otherwise returns 0    either set may be NULL*/int qh_setequal(setT *setA, setT *setB) {  void **elemAp, **elemBp;  int sizeA, sizeB;    SETreturnsize_(setA, sizeA);  SETreturnsize_(setB, sizeB);  if (sizeA != sizeB)    return 0;  if (!sizeA)    return 1;  elemAp= SETaddr_(setA, void);  elemBp= SETaddr_(setB, void);  if (!memcmp((char *)elemAp, (char *)elemBp, sizeA*SETelemsize))    return 1;  return 0;} /* setequal *//*-----------------------------------------setequal_except- returns 1 if two sorted sets are equal except for 2 elements  neither set may be NULL  false if either skip is missing  if second skip is NULL,      can skip any one element*/int qh_setequal_except (setT *setA, void *skipelemA, setT *setB, void *skipelemB) {  void **elemA, **elemB;  int skip=0;  elemA= SETaddr_(setA, void);  elemB= SETaddr_(setB, void);  while (1) {    if (*elemA == skipelemA) {      skip++;      elemA++;    }    if (skipelemB) {      if (*elemB == skipelemB) {        skip++;        elemB++;      }    }else if (*elemA != *elemB) {      skip++;      if (!(skipelemB= *elemB++))        return 0;    }    if (!*elemA)      break;    if (*elemA++ != *elemB++)       return 0;  }  if (skip != 2 || *elemB)    return 0;  return 1;} /* setequal_except */  /*-----------------------------------------setequal_skip- returns 1 if two sorted sets are equal except for skips  neither set may be NULL  false if different size*/int qh_setequal_skip (setT *setA, int skipA, setT *setB, int skipB) {  void **elemA, **elemB, **skipAp, **skipBp;  elemA= SETaddr_(setA, void);  elemB= SETaddr_(setB, void);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线电影国产精品| 日韩一区二区三区四区五区六区| 91在线无精精品入口| 欧美色爱综合网| 日本一区二区免费在线 | 久久久噜噜噜久久中文字幕色伊伊| 久久久噜噜噜久噜久久综合| 夜夜揉揉日日人人青青一国产精品 | 亚洲午夜精品17c| 国产麻豆日韩欧美久久| 欧美亚洲国产一区二区三区va| 26uuu精品一区二区| 丝袜诱惑亚洲看片| 91免费在线播放| 国产欧美精品一区二区色综合朱莉| 亚洲va韩国va欧美va精品| 国产不卡在线视频| 日韩欧美国产不卡| 日韩不卡手机在线v区| 色婷婷国产精品综合在线观看| 久久女同互慰一区二区三区| 天堂成人国产精品一区| 99久久精品国产一区| 国产午夜精品理论片a级大结局| 日本不卡一二三| 精品视频一区三区九区| 亚洲精品成a人| 91片在线免费观看| 国产精品福利一区二区三区| 国产麻豆欧美日韩一区| 亚洲精品一区二区三区福利| 日韩精品亚洲一区| 91极品美女在线| 综合久久久久久久| 北岛玲一区二区三区四区| 欧美激情一区二区| 国产白丝精品91爽爽久久| 2022国产精品视频| 国产精品99久久不卡二区| 精品久久久久久最新网址| 九九视频精品免费| 久久久久久久一区| 国产大陆a不卡| 日本亚洲天堂网| 日韩免费视频线观看| 日韩国产欧美视频| 日韩欧美一区二区三区在线| 日本不卡不码高清免费观看| 91精品国产全国免费观看 | 欧美日韩国产经典色站一区二区三区 | 777xxx欧美| 美女视频网站久久| 久久―日本道色综合久久| 国产精品一区二区久久不卡| 国产视频一区二区三区在线观看| 精品一区二区三区在线视频| 2020国产成人综合网| 国产精品综合一区二区| 国产精品久久久久久久久快鸭| 99久久久久久99| 亚洲一区二区三区爽爽爽爽爽| 欧美高清hd18日本| 国产美女在线观看一区| 一区二区久久久| 日韩精品一区在线观看| 不卡一区二区三区四区| 亚洲欧美日韩电影| 日韩一二三区不卡| 成人免费高清视频| 亚洲国产视频在线| 欧美国产欧美综合| 欧美少妇xxx| 国产成人综合网| 偷拍一区二区三区| 国产精品视频免费| 91精品国产综合久久蜜臀| 国产成人精品影视| 日韩vs国产vs欧美| 粉嫩aⅴ一区二区三区四区 | eeuss鲁一区二区三区| 亚洲国产视频网站| 国产目拍亚洲精品99久久精品| 精品视频一区三区九区| 成人激情文学综合网| 日韩av成人高清| 亚洲另类在线视频| 久久综合999| 欧美一级在线视频| 色悠悠久久综合| 国产尤物一区二区| 美女高潮久久久| 亚洲国产视频一区二区| 亚洲国产高清aⅴ视频| 日韩欧美中文一区| 精品1区2区3区| 色婷婷av一区二区三区软件| 成人小视频在线观看| 免费亚洲电影在线| 亚洲国产视频一区| 亚洲激情五月婷婷| 国产精品精品国产色婷婷| 久久亚洲一区二区三区明星换脸| 欧美日韩视频在线第一区| 91丝袜美腿高跟国产极品老师| 精品一区二区三区在线观看国产| 首页欧美精品中文字幕| 一区二区三区日韩精品| 中文字幕在线一区| 国产日本一区二区| 国产欧美一区二区三区沐欲| 精品日韩在线一区| 欧美tickle裸体挠脚心vk| 91精品国产美女浴室洗澡无遮挡| 色婷婷国产精品| 在线免费视频一区二区| 99re热这里只有精品免费视频| 成人伦理片在线| 不卡大黄网站免费看| 成人免费毛片aaaaa**| 成人精品电影在线观看| 成人免费毛片嘿嘿连载视频| 精品国产自在久精品国产| 91精品国产高清一区二区三区蜜臀| 欧美午夜电影网| 欧美日韩美女一区二区| 3d动漫精品啪啪一区二区竹菊| 欧美精品粉嫩高潮一区二区| 欧美乱妇20p| 欧美一区二区三级| 精品国产一区二区三区不卡| 精品88久久久久88久久久| 欧美精品一区二区在线播放| 久久亚洲一级片| 亚洲欧美视频在线观看视频| 一区二区成人在线| 日韩av不卡一区二区| 六月婷婷色综合| 成人av网站免费观看| 欧美亚洲一区二区三区四区| 欧美日韩国产免费一区二区| 欧美一级黄色大片| 国产视频不卡一区| 亚洲激情六月丁香| 玖玖九九国产精品| 成人国产亚洲欧美成人综合网 | 欧日韩精品视频| 制服丝袜亚洲精品中文字幕| 久久久久成人黄色影片| 自拍av一区二区三区| 午夜激情一区二区三区| 久久精品久久99精品久久| av成人老司机| 91精品国产综合久久精品性色| 久久夜色精品国产噜噜av| 中文字幕在线一区二区三区| 日本不卡在线视频| 99久久精品国产导航| 欧美高清www午色夜在线视频| 久久免费午夜影院| 亚洲国产aⅴ成人精品无吗| 久草这里只有精品视频| 国产精品国产三级国产| 亚洲成人av中文| 国产成人av福利| 欧美三级电影在线观看| 欧美激情一区二区三区不卡| 日日夜夜免费精品| 97aⅴ精品视频一二三区| 日韩免费成人网| 亚洲国产综合91精品麻豆| 暴力调教一区二区三区| 亚洲精品在线电影| 亚洲成av人片www| 91农村精品一区二区在线| 久久这里只有精品6| 日韩制服丝袜av| 一本大道久久精品懂色aⅴ| 久久久五月婷婷| 日韩avvvv在线播放| 欧美三级三级三级爽爽爽| 日韩一区有码在线| 精品一区二区三区影院在线午夜| 欧美日韩一区小说| 玉足女爽爽91| 91麻豆国产福利在线观看| 国产日韩精品一区| 国产一区二区三区国产| 欧美一区二区三区四区高清 | 精久久久久久久久久久| 欧美日韩国产另类不卡| 亚洲香肠在线观看| 色婷婷一区二区三区四区| |精品福利一区二区三区| 国产成人精品aa毛片| 精品免费视频.| 久久国产福利国产秒拍| 日韩亚洲电影在线| 石原莉奈一区二区三区在线观看| 欧美无砖砖区免费| 午夜精品福利一区二区三区av |