Redisにおけるlistの実装(アドレス伝達)


#include "adlist.h"
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<time.h>

int main()
{
	struct list *t;
	t=listCreate();

	int i;
	char *pb[5];
	char buf[25];
	srand(time(NULL));
	
	char *pd;
	for(i=0;i<5;i++)
	{		
		//Method1:
		//pb[i]=(char*)malloc(sizeof(char)*10);
		//Method2:
		pd=(char*)malloc(sizeof(char)*10);
		sprintf(pd,"test index:%d.",rand()%100);
		
		//Method3:
		//memset(buf,0,25);
		//char buf[25];
		//sprintf(buf,"test index:%d.",rand()%100); 
		//      ,  buf      for loop          ,  listAddNodeHead         buf     value   ,
		//     list   ,       listAddNodeHead value.
		//            ,    loop  ,malloc  ,    loop,      。                   。
		//            
                t = listAddNodeHead(t,(void*)pd);
		//t = listAddNodeTail(t,(void*)buf);
		if(!t){
			printf("listAddNodeHead error!
"); exit(0); } printf("%s
",pd); //free(pb[i]); //free(pd); } free(pd); printf("
"); listNode *p=NULL; p=t->head; if(p->prev==NULL){ printf("OK
"); } while(p!=NULL) { printf("%s
",p->value); p=p->next; } printf("
"); /*p=t->tail; if(p->next==NULL){ printf("OK
"); } while(p!=NULL) { printf("%s
",p->value); p=p->prev; } printf("
");*/ // #define AL_START_HEAD 0 // #define AL_START_TAIL 1 listIter *it=NULL; listNode *node=NULL; it = listGetIterator(t,0); while((node=listNext(it))!=NULL) { printf("%s
",node->value); listDelNode(t,node); } listReleaseIterator(it); listRelease(t); return 0; } , redis 。