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

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

?? _list_.c

?? 漢字在計算機內存放分為兩種情況
?? C
字號:

#include "_List_.h"
#ifndef NULL
#define NULL 0
#endif
/*
* 張向陽 為SIMGUI開發
* 此程序實現一個帶有索引的鏈表基礎,可用來支持設計多種類型的鏈表
* 以及存放你想存放的任何結構構和數據
*/

/*
*獲得一個結點內存區的大小
*/
 int    GetListNodeSize(pLIST list,int nodorder)
 {
        if(list == NULL) return -1;
        if(nodorder  < 0 || nodorder >= list->useditems) return -1;
        
        return list->items[nodorder].datasize;
        
 }
 
 /*
 *建立鏈表
 */
 pLIST  CreateList(int nodnums)
 {
        
        pLIST list = NULL;
    
        if(nodnums <= 0)
        {
                list = (pLIST)malloc(sizeof(LIST));
                list->items   = ( pDATANOD) malloc(ITEMS_DEFNUM * sizeof(DATANOD));
                memset(list->items,0,ITEMS_DEFNUM * sizeof(DATANOD));   
        }
         else
        {
                list = (pLIST)malloc(sizeof(LIST))      ;
                list->items   = (pDATANOD)malloc(nodnums *sizeof(DATANOD));
                memset(list->items,0,nodnums * sizeof(DATANOD));        
        }

        if(list)
        {
                list->itemnums = (nodnums <= 0)?ITEMS_DEFNUM:nodnums;
                list->useditems = 0;
   
        }else return NULL;
    
        return list;

}

/*
*得到LIST中存儲的結點總數
*/
int    GetListNodsCount(pLIST list)
 {
        
         if(list == NULL) return -1;
         if(list->items == NULL) return -1;/*validate*/
         if(list->useditems > list->itemnums)return -1;
         return list->useditems;        
 }
 
 /*把數據按照指定序號加入鏈表*/
 int   AddDataToListByOrder(pLIST list,void *point,int datasize,int order)
 {      
 	/*未實現,沒有必要*/
        return 1;
        
 }
 
 /*把指針按照指定序號加入鏈表*/
 int   AddPointerToListByOrder(pLIST list,void *point,int order)
 {      
        /**/
        return 1;
 }
 
 /*只向鏈表中增加加一個指針不開辟空間復制*/
 int    AddPointerToList(pLIST list,void *point)
 {
        /**/
        return AddDataToList( list,point, -1); 
 }
 
 /*把數據放入LIST中,采用另外開空間并復制的方式*/
 int   AddDataToList(pLIST list,void *data, int datasize)
 {
        unsigned char *dataspace = NULL;
        
        if(list == NULL || data == NULL) return -1;
         
        if(list->items == NULL)/*null strlist */
        {
                
          list->items = ( pDATANOD) malloc(ITEMS_DEFNUM * sizeof(DATANOD));
          memset(list->items,0,ITEMS_DEFNUM * sizeof(DATANOD)); 
          
          list->itemnums = ITEMS_DEFNUM;
          list->useditems = 0;
        }

        if(list->useditems >= list->itemnums -1)/*not enought space*/
        {
          list->items = (pDATANOD)realloc(list->items,(list->itemnums + ITEMS_DEFNUM) * sizeof(DATANOD));       
          memset(&list->items[list->itemnums - 1],0,sizeof(DATANOD)*ITEMS_DEFNUM );
          list->itemnums += ITEMS_DEFNUM;
        }
        
        if(datasize > 0)
         dataspace = (unsigned char*)malloc(datasize + 1);
        
        if(dataspace)/*這里簡單的把開辟的空間交給鏈表保存,以后考慮增加內存管理功能:開辟的空間不被刪掉可復用*/
        {
           memcpy(dataspace,data,datasize);
           dataspace[datasize] = 0;
           list->items[list->useditems].data = dataspace;
           list->items[list->useditems].datasize = datasize;
           list->useditems++;
           return list->useditems - 1;  
        }else if(datasize <= 0)/*增加一個指針型的結點*/
        {
           list->items[list->useditems].data = data;
           list->items[list->useditems].datasize = -1;
           list->useditems++;
           return list->useditems - 1;          
        }
        
        return -1;
        
 }
 
 /*
 *由ORDER獲得某個結點
 */
 void * GetListNod(pLIST list,int order)
 {
        if(list == NULL) return NULL;
        if(list->useditems < order)return NULL;
        return  list->items[order].data;
 }
 
 /*
 *由ORDER釋放某個結點,但非LIST開辟的內存不會被釋放
 */
 BOOL   FreeListNod(pLIST list,int order)
 {
        
        
        
        if(list==NULL) return 0;
        
        
        if(list->useditems <= order)
        return 0;
        
        /*指針存在,而且是鏈表自己開的空間,若是指針狀態的結點則不釋放*/
        if(list->items[order].data && list->items[order].datasize > 0)
        {
          free(list->items[order].data);
          list->useditems -- ;
          list->items[order].data = 0;
          list->items[order].datasize = 0;
           
        }else 
        {
	  list->useditems -- ;
	  list->items[order].data = 0;
	}		 
        memcpy(&list->items[order],&list->items[order+ 1],sizeof(DATANOD)*(list->useditems - order));
        memset( &(list->items[list->useditems ]),0,sizeof(DATANOD));
       
        return 1;
 }
 
 /*釋放所有由LIST開辟的空間*/
 BOOL   FreeListPrivateSpace(pLIST list)
 {
        if(FreeListNods(list) == 0)
        return 0;
        
        if(list->items)
        {
         free( list->items);/*釋放索引表*/
         list->items = NULL;
        }
        
        return 1;
 }
 /*
 *把所有由鏈表開辟的ITEM空間釋放出來
 */
 BOOL   FreeListNods(pLIST list)
 {
        int i;
        if(list == NULL) return 0;
        if(list->useditems > 0)
        for( i = list->useditems -1;i >= 0 ;i--)
        FreeListNod(list,0);
       
        return 1;
 }    
 
 /*
 *刪除由CreateList創建的鏈表
 */
 void   DeleteList(pLIST list)
 {
        if(list == NULL)return;
        FreeListPrivateSpace(list);
        free(list);
 }
 
 /*修改一個結點的內容*/
 BOOL   ModifyListNod(pLIST list,void *data,int datasize,int order)
 {
        if(list == NULL ||data == NULL ) return 0;
        
        if(datasize <= 0||order < 0)return 0;/*無效的引用序號和指針形結點不能處理*/
        if(list->useditems <= order) return 0;
        
        if(list->items[order].data && list->items[order].datasize <= 0)
        return 0;/*指針結點則返回不處理*/
        
        if(list->items[order].data == NULL)/*是空結點就直接使用*/
        {
           list->items[order].data = (void*)malloc(datasize + 1);
           list->items[order].datasize = datasize ;          
        }
        
        if(list->items[order].datasize < datasize)
        {
          free(list->items[order].data);
          list->items[order].data = (void*)malloc(datasize + 1);
          list->items[order].datasize = datasize ;   
          
        }
        
        /*error judge*/
        if(list->items[order].data == NULL )
         return 0;
         
        memset(list->items[order].data,0, list->items[order].datasize + 1);
        memcpy(list->items[order].data,data,datasize);
        
        return 1;
        
 }
 
 /*改變兩個結點的位置*/
 BOOL   ChangeTwoNods(pLIST list,int srcnodorder,int dsknodorder)
 {
        DATANOD tempnod;
        if(srcnodorder < 0 || dsknodorder < 0) return 0;
        if(list == NULL)return 0;
    
        if(list->useditems <= srcnodorder ||list->useditems <= srcnodorder )
        return 0;       
        tempnod = list->items[srcnodorder];
        list->items[srcnodorder] = list->items[dsknodorder]; 
        list->items[dsknodorder]  = tempnod;
        return 1;
        
 }
 
  int    GetListNodeOrder(pLIST list,void *item,int itemsize)
  {
        int i;
        void *nod;
        if(list ==NULL || item == NULL || itemsize <= 0) return -1;
        if(list->useditems <= 0)return -1;
         
        for(i = 0;i < GetListNodsCount(list);i++)
        {
                nod = (void *)GetListNod(list,i);
                if(nod)
                if(memcmp(nod,item,itemsize)== 0)
                 return i;
                
        }       
        return -1;
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久久久| 国产日韩欧美精品综合| 欧美tickle裸体挠脚心vk| 精品国产区一区| 亚洲欧洲精品成人久久奇米网| 亚洲综合免费观看高清在线观看| 午夜欧美电影在线观看| 国产精品一区二区在线看| 欧美午夜寂寞影院| 2021久久国产精品不只是精品| 国产精品久久久久aaaa| 视频一区二区三区入口| 国产福利视频一区二区三区| 91蜜桃网址入口| 精品福利二区三区| 亚洲图片欧美视频| 成人高清免费观看| 亚洲精品一区在线观看| 午夜av区久久| 欧美专区日韩专区| 国产精品网曝门| 久久精品国产99| 日韩欧美一区电影| 午夜影院久久久| 欧美蜜桃一区二区三区| 亚洲欧美日韩在线不卡| www.爱久久.com| 欧美经典一区二区三区| 国产精一品亚洲二区在线视频| 欧美一区二区在线看| 视频一区欧美日韩| 欧美无人高清视频在线观看| 一区二区三区日韩在线观看| 91免费小视频| 一区二区三区高清在线| 欧美视频在线观看一区二区| 日日摸夜夜添夜夜添亚洲女人| 欧美日韩一区二区在线观看视频| 欧美日韩中文国产| 久久综合九色综合97_久久久| 日韩和欧美的一区| 国产精品成人免费| 日韩一区二区影院| 色婷婷国产精品久久包臀| 久久99精品国产.久久久久久| 久久久99精品免费观看不卡| 国产激情91久久精品导航| 日本一区二区免费在线观看视频| 春色校园综合激情亚洲| 亚洲少妇30p| 欧美一级片在线看| 成人午夜视频在线观看| 国产精品国产三级国产aⅴ原创 | 日本一区二区综合亚洲| av激情亚洲男人天堂| 亚洲高清久久久| 精品国产乱码久久久久久牛牛 | 亚洲蜜臀av乱码久久精品| 欧洲一区在线电影| 久久福利视频一区二区| 一区二区三区资源| 精品国内片67194| 欧美成人精精品一区二区频| 久久av资源网| 亚洲线精品一区二区三区| 欧美精品一区二区三区久久久 | 国内精品国产成人国产三级粉色| 国产精品久久看| 精品理论电影在线观看 | 国产日产亚洲精品系列| 精品视频一区 二区 三区| 国产成人精品影视| 日韩经典中文字幕一区| 中文字幕一区二区三区在线播放 | 亚洲婷婷综合色高清在线| 99精品视频免费在线观看| 蜜臀av一区二区三区| 亚洲一区二区三区四区五区黄| 国产欧美视频一区二区三区| 日韩一区和二区| 欧美日本在线看| 欧洲精品一区二区| 91麻豆精东视频| 成人激情免费电影网址| 懂色av一区二区三区免费观看| 国产精品99久久久久久有的能看| 国产精品一区二区你懂的| 成人中文字幕电影| 色哟哟一区二区在线观看| 91亚洲永久精品| 欧美日韩国产小视频| 91精品国产一区二区| 久久嫩草精品久久久久| 中文字幕一区二区三区不卡在线| 国产日产欧美一区| 日韩欧美国产精品一区| 欧美一级片在线| 日韩欧美一级在线播放| 日韩一区二区三区高清免费看看 | 亚洲成av人片一区二区梦乃| 亚洲午夜在线视频| 青青草原综合久久大伊人精品| 久久se精品一区精品二区| 国产黑丝在线一区二区三区| 国产成人av电影免费在线观看| 99久久99久久精品免费看蜜桃| 色欲综合视频天天天| 欧美在线免费观看亚洲| 日韩欧美国产一区二区三区| 久久精品人人做人人综合 | 天天综合日日夜夜精品| 久久国产麻豆精品| 国产成人在线网站| 91香蕉视频黄| 日韩一区二区精品在线观看| 精品国产sm最大网站免费看| 中文字幕 久热精品 视频在线| 亚洲免费电影在线| 蜜桃视频在线观看一区二区| yourporn久久国产精品| 精品污污网站免费看| 久久这里只有精品视频网| 亚洲色图19p| 久久99最新地址| 99久久精品国产一区| 日韩精品自拍偷拍| 中文字幕欧美一区| 久久精品999| 欧美日韩在线不卡| 成人欧美一区二区三区白人| 国产一区二区三区日韩| 欧美日韩一区三区四区| 日本一区二区成人| 久久99国产精品麻豆| 欧美视频精品在线| 亚洲日本va午夜在线影院| 成人性生交大片免费看中文| 日韩欧美国产三级电影视频| 亚洲观看高清完整版在线观看| 国产成人在线视频网站| 精品久久久久久久久久久院品网| 性做久久久久久免费观看 | 亚洲大尺度视频在线观看| 在线观看中文字幕不卡| 亚洲男人的天堂一区二区| 不卡av免费在线观看| 国产午夜精品一区二区三区四区| 精品亚洲欧美一区| 久久免费视频色| 国产精品一区二区男女羞羞无遮挡| 日韩欧美一区电影| 激情小说亚洲一区| 国产性色一区二区| 国产精品99久久久| 国产精品视频一二三| 99re6这里只有精品视频在线观看| 亚洲三级电影网站| 欧美老年两性高潮| 蜜臀久久久久久久| www精品美女久久久tv| 国产69精品久久久久777| 国产精品免费久久久久| 一本在线高清不卡dvd| 午夜久久久久久久久| 这里只有精品99re| 国产精品系列在线观看| 中文子幕无线码一区tr| 91国偷自产一区二区开放时间| 亚欧色一区w666天堂| 久久精品一区二区三区av| 99国产麻豆精品| 午夜精品久久久久久久蜜桃app| 日韩精品一区二区三区中文精品| 成人av高清在线| 视频一区视频二区中文| 国产农村妇女毛片精品久久麻豆| 91一区二区三区在线播放| 伦理电影国产精品| 国产精品电影院| 欧美大胆一级视频| 欧美视频在线不卡| 国产a精品视频| 蜜桃av噜噜一区| 亚洲一级电影视频| 国产精品私人自拍| 久久午夜免费电影| 欧美成人a视频| 欧美少妇xxx| 色综合久久中文字幕| 国产一区二区三区免费播放| 亚洲成人在线观看视频| 国产精品美女一区二区三区| 久久久久久麻豆| 精品成人免费观看| 日韩一区二区在线免费观看| 欧美日韩三级在线| 欧美色视频在线| 91久久精品一区二区| 91在线国产福利| av高清久久久|