int main(void)
{
    /// create list
    SqList List;
    InitList(&List);
    /// insert element to list
    ListInsert(&List, 1, 1);
    ListInsert(&List, 2, 2);
    ListInsert(&List, 3, 3);
    ListInsert(&List, 4, 4);
    ListInsert(&List, 5, 5);
    /// locate element
    printf("element %d is in %d\n", 4, LocateElem(&List, 4));
    /// list length
    int length = ListLength(&List);
    printf("List length is %d\n", length);
    /// get list element
    int i, element;
    for (i = 1; i <= length; i++) {
        GetElem(&List, i, &element);
        printf("element in %d is %d\n", i, element);
    }
    /// delect element from list
    ListDelete(&List, 4, &element);
    printf("deleted element in %d is %d\n", 4, element);
    /// clear list
    ClearList(&List);
    printf("List empty is %d\n", ListEmpty(&List));
    return EXIT_SUCCESS;
}
Ejemplo n.º 2
0
 void MergeList(SqList La,SqList Lb,SqList &Lc) // 算法2.2
 { // 已知线性表La和Lb中的数据元素按值非递减排列。
   // 归并La和Lb得到新的线性表Lc,Lc的数据元素也按值非递减排列
   int i=1,j=1,k=0;
   int La_len,Lb_len;
   ElemType ai,bj;
   InitList(Lc); // 创建空表Lc
   La_len=ListLength(La);
   Lb_len=ListLength(Lb);
   while(i<=La_len&&j<=Lb_len) // 表La和表Lb均非空
   {
     GetElem(La,i,ai);
     GetElem(Lb,j,bj);
     if(ai<=bj)
     {
       ListInsert(Lc,++k,ai);
       ++i;
     }
     else
     {
       ListInsert(Lc,++k,bj);
       ++j;
     }
   } // 以下两个while循环只会有一个被执行
   while(i<=La_len) // 表La非空且表Lb空
   {
     GetElem(La,i++,ai);
     ListInsert(Lc,++k,ai);
   }
   while(j<=Lb_len) // 表Lb非空且表La空
   {
     GetElem(Lb,j++,bj);
     ListInsert(Lc,++k,bj);
   }
 }
Ejemplo n.º 3
0
int main()
{
	DPoint _PFir;
	DPoint _PSec;
	DPoint _PAim;
	DPoint _pCro;

	_PFir._PointX=0.0;
	_PFir._PointY=0.0;

	_PSec._PointX=100.0;
	_PSec._PointY=0.0;

	_PAim._PointX=20.0;
	_PAim._PointY=60.0;

	CalcuVertical(_PFir,_PSec, _PAim,&_pCro);

	printf("%.6lf, %.6lf", _pCro._PointX, _pCro._PointY);
	printf("%.6lf",CalcuDis(_PFir,_PSec,_PAim));
	////////////////////////////////////////
	SqList lo;
	ListInit(&lo);
	DPoint _dPValue;
	DPoint _dPIValue;

	_dPValue._PointX = 100.0;
	_dPValue._PointY = 100.0;
	_dPIValue._PointX = 300.0;
	_dPIValue._PointY = 300.0;
	for (size_t _i=0;_i<3;_i++)
	{
		ListInsert(&lo,1,_dPValue);
	}
		
	ListInsert(&lo,2,_dPIValue);

	printf("%.6lf,%.6lf",lo._nArray[0]._PointX,lo._nArray[0]._PointX);
	//////////////////////////////////////
//	vector<vector<CPoint>> _vecPOINT;
//	vector<CPoint> _vecIn;
//	CPoint _ptFir;
//	CPoint _ptIn;
//	_ptIn.SetPoint(300,300);
//	_ptFir.SetPoint(100,100);
//
//	_vecIn.push_back(_ptFir);
//	for (size_t _i=0; _i<5;_i++)
//	{
//		_vecIn.push_back(_ptFir);
		//_vecPOINT.push_back(_vecIn);
//	}
//	
//	_vecPOINT.push_back(_vecIn);
//
//	_vecPOINT[0].insert(_vecPOINT[0].begin()+1,_ptIn);
	///////////////////////////////////////
	return 0;
}
Ejemplo n.º 4
0
//Merge1
void MergeList1(SLinkList L)
{
	int n=10;
	int i=0;
	ElemType e;
	int j=0;

	InitList(L);
	printf("请输入A中数据的个数:");

	scanf("%d",&i);
	if(i>0)
		n=i;

	for(i=0;i<n;i++)
	{
loop:
		scanf("%d",&e);
		if(!LocateElem(L,e,compare))
			ListInsert(L,i+1,e);
		else
		{
			printf("已存在,请重新输入:");
			goto loop;
		}
	}
	printf("遍历链表");
	TraverseList(L,visit);
	printf("\n");

	printf("请输入B中数据的个数:");
	scanf("%d",&i);
	if(i>0)
		n=i;

	for(i=0;i<n;i++)
	{
		scanf("%d",&e);
		if(!(j=LocateElem(L,e,compare)))
		{
			ListInsert(L,ListLength(L)+1,e);
		}
		else
		{
			ListDelete(L,j,e);
		}
	}

	printf("遍历链表");
	TraverseList(L,visit);
	printf("\n");
}
Ejemplo n.º 5
0
int main(int argc, char *argv[]) 
{
    char initial[10001] = {0};
    int n, i;
    char ch;
    List L;
 
#ifdef _OJ_
    const int SZ = 1<<20;
    char inbuf[SZ];
    char outbuf[SZ];
    setvbuf(stdin,inbuf,_IOFBF,SZ);
    setvbuf(stdout,outbuf,_IOFBF,SZ);
#endif   

    scanf("%s", initial);
    
    InitList(&L, initial);
    
    scanf("%d", &n);
    while( n-- )
    {
        scanf("%d %c", &i, &ch);
        ListInsert(L, i, ch);
        ListTraverse(L);    
    }
    
    return 0;
}
Ejemplo n.º 6
0
int main()
{
	struct SqList L;
	InitList(&L);
	printf("ListEmpty(L) = %d\n", ListEmpty(L));
	printSqList(L);
	
	int e;
	int index = 7;
	GetElem(L, index, &e);
	printf("the %d th number is e : %d\n", index, e);
	printf("Find %d at index %d\n", e, Locate(L, e));


	int insertNum = 100;
	ListInsert(&L, index, 100);
	printf("Insert %d at index %d  into SqList\n", insertNum, index);
	printSqList(L);

	ListDelete(&L, index, &e); 
	printf("Delete %d at index %d from SqlList\n", e, index);
	printSqList(L);
	
	printf("ListLength(L) = %d\n", ListLength(L));

    ClearList(&L);
	printf("ListEmpty(L) = %d\n", ListEmpty(L));
	printSqList(L);

	return 0;
}
Ejemplo n.º 7
0
static WatchedFile* NewWatchedFile(const WCHAR* filePath, const std::function<void()>& onFileChangedCb) {
    bool isManualCheck = PathIsNetworkPath(filePath);
    AutoFreeW dirPath(path::GetDir(filePath));
    WatchedDir* wd = nullptr;
    bool newDir = false;
    if (!isManualCheck) {
        wd = FindExistingWatchedDir(dirPath);
        if (!wd) {
            wd = NewWatchedDir(dirPath);
            if (!wd)
                return nullptr;
            newDir = true;
        }
    }

    WatchedFile* wf = AllocStruct<WatchedFile>();
    wf->filePath = str::Dup(filePath);
    wf->onFileChangedCb = onFileChangedCb;
    wf->watchedDir = wd;
    wf->isManualCheck = isManualCheck;

    ListInsert(&g_watchedFiles, wf);

    if (wf->isManualCheck) {
        GetFileState(filePath, &wf->fileState);
        AwakeWatcherThread();
    } else {
        if (newDir)
            StartMonitoringDirForChanges(wf->watchedDir);
    }

    return wf;
}
Ejemplo n.º 8
0
////////////////////////////////////////////////////
// 功能:
// 输入:
// 输出:
// 返回:
// 说明:
////////////////////////////////////////////////////
int MediaSrvRegistCallback(int type, DWORD device, PMEDIA_CALLBACK callback)
{
	PLIST n;
	PLIST head;
	PCALLBACK_LINK check;
	PCALLBACK_LINK link;

	// 申请节点,并初始化
	link = kmalloc(sizeof(CALLBACK_LINK));
	if(link == NULL)
		return -1;
	kmemcpy(&link->Callback, callback, sizeof(MEDIA_CALLBACK));
	link->Type = type;
	link->Device = device;
	ListInit(&link->Link);
	
	// 检查设备是否已经注册
	head = &MediaCallbackList;
	for(n=ListFirst(head); n!=head; n=ListNext(n))
	{
		check = ListEntry(n, CALLBACK_LINK, Link);
		if(&check->Callback == callback)
		{
			kfree(link);
			return -1;
		}
	}
	ListInsert(&MediaCallbackList, &link->Link);		
	return 0;
}
Ejemplo n.º 9
0
int main()
{
  int i = 0;
  char Sq_list[MAX] = "abcdefg";
  char data;
  printf("The content of the list\n");
  for(i = 0;(i < MAX && Sq_list[i] != 0); i++)
    {
      printf("%c\t",Sq_list[i]);
      if((i+1)%8 == 0)
	printf("\n");
    }
  printf("\n");
  unsigned int position = 0;
  printf("Put in the position you wanner to insert!\n");
  scanf("%d,",&position);
  printf("Put in the data you wanner insert\n");
  scanf("%c",&data);
  ListInsert(Sq_list,position,data);
  printf("The insert result:\n");
  for(i = 0;(i < MAX && Sq_list[i] != 0); i++)
    {
      printf("%c\t",Sq_list[i]);
      if((i+1)%8 == 0)
	printf("\n");
    }
}
Ejemplo n.º 10
0
static WatchedFile *NewWatchedFile(const WCHAR *filePath, FileChangeObserver *observer)
{
    bool isManualCheck = PathIsNetworkPath(filePath);
    ScopedMem<WCHAR> dirPath(path::GetDir(filePath));
    WatchedDir *wd = nullptr;
    bool newDir = false;
    if (!isManualCheck) {
        wd = FindExistingWatchedDir(dirPath);
        if (!wd) {
            wd = NewWatchedDir(dirPath);
            if (!wd)
                return nullptr;
            newDir = true;
        }
    }

    WatchedFile *wf = AllocStruct<WatchedFile>();
    wf->filePath = str::Dup(filePath);
    wf->observer = observer;
    wf->watchedDir = wd;
    wf->isManualCheck = isManualCheck;

    ListInsert(&g_watchedFiles, wf);

    if (wf->isManualCheck) {
        GetFileState(filePath, &wf->fileState);
        AwakeWatcherThread();
    } else {
        if (newDir)
            StartMonitoringDirForChanges(wf->watchedDir);
    }

    return wf;
}
Ejemplo n.º 11
0
void RegisterLayoutCreatorFor(const char *layoutName, LayoutCreatorFunc creator)
{
    LayoutCreatorNode *lc = AllocStruct<LayoutCreatorNode>();
    lc->typeName = str::Dup(layoutName);
    lc->creator = creator;
    ListInsert(&gLayoutCreators, lc);
}
void test_Increment(void) {
	LIST_TYPE list = NULL;
	Status result = InitialList(&list);
	int size = LIST_INITIAL_SIZE + LIST_INCREMENT;

	CU_ASSERT_EQUAL(result, OK);
	if (result != OK)
		return;

	int i = 0;
	for (i = 0; i < size - 1; i++) {
		result = ListInsert(list, 1, i);
		CU_ASSERT_EQUAL(result, OK);
		if (result != OK)
			return;
	}


	CU_ASSERT_EQUAL(list -> listsize, size);
	CU_ASSERT_EQUAL(list -> length, size - 1);
	for (i = 0; i < size - 1; i++) {
		CU_ASSERT_EQUAL(*(list -> element + i), size
				- i - 2);
	}
}
Ejemplo n.º 13
0
int main(void)
{
	ElemType site[11] = { 'a', 'n', 'o', 't', 'h', 'e', 'r', 'h', 'o', 'm', 'e' };
	LinkList *Link, *LinkR;
	ElemType e;

	CreateListF(Link, site, 11);
	CreateListR(LinkR, site, 11);
	DispList(Link);
	DispList(LinkR);
	DestroyList(LinkR);
	if (ListEmpty(Link))
	{
		printf("List is empty\n");
	}
	else
	{
		printf("List isn't empty\n");
	}
	printf("ListLength: %d\n", ListLength(Link));
	GetElem(Link, ListLength(Link), e);
	ListInsert(Link, 2, e);
	DispList(Link);
	ListDelete(Link, 3, e);
	DispList(Link);
	printf("The location of 'o' is %d\n", LocateElem(Link, 'o'));
	DestroyList(Link);

	return 0;
}
Ejemplo n.º 14
0
 void main()
 {
   SqList La,Lb,Lc;
   int j,a[4]={3,5,8,11},b[7]={2,6,8,9,11,15,20};
   InitList(La); // 创建空表La
   for(j=1;j<=4;j++) // 在表La中插入4个元素
     ListInsert(La,j,a[j-1]);
   printf("La= "); // 输出表La的内容
   ListTraverse(La,print1);
   InitList(Lb); // 创建空表Lb
   for(j=1;j<=7;j++) // 在表Lb中插入7个元素
     ListInsert(Lb,j,b[j-1]);
   printf("Lb= "); // 输出表Lb的内容
   ListTraverse(Lb,print1);
   MergeList(La,Lb,Lc);
   printf("Lc= "); // 输出表Lc的内容
   ListTraverse(Lc,print1);
 }
void CLuaCallInHandler::AddHandle(CLuaHandle* lh)
{
	ListInsert(handles, lh);

#define ADDHANDLE(name) \
  if (lh->HasCallIn(#name)) { ListInsert(list ## name, lh); }
  
	ADDHANDLE(GamePreload);
	ADDHANDLE(GameStart);
	ADDHANDLE(GameOver);
	ADDHANDLE(TeamDied);

	ADDHANDLE(UnitCreated);
	ADDHANDLE(UnitFinished);
	ADDHANDLE(UnitFromFactory);
	ADDHANDLE(UnitDestroyed);
	ADDHANDLE(UnitTaken);
	ADDHANDLE(UnitGiven);

	ADDHANDLE(UnitIdle);
	ADDHANDLE(UnitCmdDone);
	ADDHANDLE(UnitDamaged);
	ADDHANDLE(UnitExperience);

	ADDHANDLE(UnitSeismicPing);
	ADDHANDLE(UnitEnteredRadar);
	ADDHANDLE(UnitEnteredLos);
	ADDHANDLE(UnitLeftRadar);
	ADDHANDLE(UnitLeftLos);

	ADDHANDLE(UnitLoaded);
	ADDHANDLE(UnitUnloaded);

	ADDHANDLE(UnitCloaked);
	ADDHANDLE(UnitDecloaked);

	ADDHANDLE(FeatureCreated);
	ADDHANDLE(FeatureDestroyed);

	ADDHANDLE(Explosion);

	ADDHANDLE(StockpileChanged);

	ADDHANDLE(Update);

	ADDHANDLE(DefaultCommand);

	ADDHANDLE(DrawGenesis);
	ADDHANDLE(DrawWorld);
	ADDHANDLE(DrawWorldPreUnit);
	ADDHANDLE(DrawWorldShadow);
	ADDHANDLE(DrawWorldReflection);
	ADDHANDLE(DrawWorldRefraction);
	ADDHANDLE(DrawScreenEffects);
	ADDHANDLE(DrawScreen);
	ADDHANDLE(DrawInMiniMap);
}
Ejemplo n.º 16
0
void main()
{
	SqList La, Lb;
	int j;
	InitList(La);
	for ( j = 1; j <= 5; j++ )
		ListInsert(La, j, j);
	printf("La = ");
	ListTraverse(La, print1);
	InitList(Lb);
	for ( j = 1; j <= 5; j++ )
		ListInsert(Lb, j, 2 * j);
	printf("Lb = ");
	ListTraverse(Lb, print1);
	Union(La, Lb);
	printf("new La= ");
	ListTraverse(La, print1);
}
Ejemplo n.º 17
0
int main()
{
    List list;
    InitList(&list);
    printf("创建线性表后线性表的当前长度:%d\n", list.length);  
    printf("ListTraverse:");
    
    //initialize
    int j;
    for(j = 0; j < 10; j++) {
        list.elem[j] = j;
        list.length++;  
    }
    printf("after sqlist inited: %d=====%d\n", list.listsize, list.length);

    //test DestoryList
    /*DestoryList(&list);
    printf("After Destory List %d=====%d\n", list.listsize, list.length);*/

    //test ListEmpty(List *list);
    printf("Is List Empty? %s\n", ListEmpty(&list) ? "true" : "false");

    //test GetElem(List *list, int i, ElemType *e)
    ElemType e1;
    if(GetElem(&list, 3, &e1) ) {
        printf("Get index 3 element from list: %d\n", e1);
    }
    
    /*for(j = 0; j < list.length; j++) {
        if(list.elem[j] == 3)
            printf("i found %d in list index %d\n", 3, j);
    }*/

    //test LocateElem
    ElemType e2 = 3;
    int position = LocateElem(&list, &e2);
    printf("%d\n", position);
    if (position >= 0)
        printf("I find e2 in list, it's index is %d\n", position);
    else 
        printf("Not Found!\n");
    
    //test ListInsert(List *list, int i, ElemType *e);
    ElemType e3 = 100;
    if(ListInsert(&list, 2, &e3)) {
        ListTraverse(&list);
    }

    //test BOOL ListDelete
    ElemType e4;
    if(ListDelete(&list, 2, &e4)) {
        printf("Delete index %d ElemType %d success\n", 1, e4);
    }
    ListTraverse(&list);

    return 0;
}
Ejemplo n.º 18
0
void main()
{
	SqList La, Lb, Lc;
	int j;
	InitList(&La); /* 创建空表La */
	for (j = 1; j <= 5; j++) /* 在表La中插入5个元素 */
		ListInsert(&La, j, j);
	printf("La= "); /* 输出表La的内容 */
	ListTraverse(La, print);
	InitList(&Lb); /* 创建空表Lb */
	for (j = 1; j <= 5; j++) /* 在表Lb中插入5个元素 */
		ListInsert(&Lb, j, 2 * j);
	printf("Lb= "); /* 输出表Lb的内容 */
	ListTraverse(Lb, print);
	MergeList(La, Lb, &Lc);
	printf("Lc= "); /* 输出表Lc的内容 */
	ListTraverse(Lc, print);
}
bool CLuaCallInHandler::InsertCallIn(CLuaHandle* lh, const string& ciName)
{
	map<string, CallInList*>::iterator it = callInMap.find(ciName);
	if (it == callInMap.end()) {
		return false;
	}
	ListInsert(*(it->second), lh);
	return true;
}
Ejemplo n.º 20
0
int MQTTProtocol_handleGets(void* pack, int sock)
{
	Getack* getack = (Getack*)pack;
	Clients* client = NULL;
	char* clientid = NULL;
	int rc = TCPSOCKET_COMPLETE;

	FUNC_ENTRY;
//	printf("------>%s, %s, %d\n", __func__, getack->ack_payload.ret_string, getack->ack_payload.ext_cmd);

	client = (Clients*)(ListFindItem(bstate->clients, &sock, clientSocketCompare)->content);
	clientid = client->clientID;
//	Log(LOG_PROTOCOL, 11, NULL, sock, clientid, getack->msgId, get->header.bits.qos,
//			getack->header.bits.retain, min(20, getack->ext_payloadlen), get->ext_payload);

	/* here we needn't process some just like publish. only to parse ext ack, get one callback. */
#if 0
	if (get->header.bits.qos == 0)
		Protocol_processPublication(get, client);
	else if (get->header.bits.qos == 1)
	{
		/* send puback before processing the publications because a lot of return publications could fill up the socket buffer */
		rc = MQTTPacket_send_puback(publish->msgId, &client->net, client->clientID);
		/* if we get a socket error from sending the puback, should we ignore the publication? */
		Protocol_processPublication(publish, client);
	}
	else if (publish->header.bits.qos == 2)
	{
		/* store publication in inbound list */
		int len;
		ListElement* listElem = NULL;
		Messages* m = malloc(sizeof(Messages));
		Publications* p = MQTTProtocol_storePublication(publish, &len);
		m->publish = p;
		m->msgid = publish->msgId;
		m->qos = publish->header.bits.qos;
		m->retain = publish->header.bits.retain;
		m->nextMessageType = PUBREL;
		if ( ( listElem = ListFindItem(client->inboundMsgs, &(m->msgid), messageIDCompare) ) != NULL )
		{   /* discard queued publication with same msgID that the current incoming message */
			Messages* msg = (Messages*)(listElem->content);
			MQTTProtocol_removePublication(msg->publish);
			ListInsert(client->inboundMsgs, m, sizeof(Messages) + len, listElem);
			ListRemove(client->inboundMsgs, msg);
		} else
			ListAppend(client->inboundMsgs, m, sizeof(Messages) + len);
		rc = MQTTPacket_send_pubrec(publish->msgId, &client->net, client->clientID);
		publish->topic = NULL;
	}
	MQTTPacket_freePublish(publish);
#endif
	MQTTPacket_freeGet(getack);
	FUNC_EXIT_RC(rc);
	return rc;
}
Ejemplo n.º 21
0
void main()
{
    SqList La, Lb, Lc;
    int j;

    InitList(La);
    for ( j = 1; j <= 5; j++ )
        ListInsert(La, j, j);
    printf("La = ");
    ListTraverse(La, print1);

    InitList(Lb);
    for ( j = 1; j <= 5; j++ )
        ListInsert(Lb, j, j*2);
    printf("Lb = ");
    ListTraverse(Lb, print1);
    MergeList(La, Lb, Lc);
    printf("Lc = ");
    ListTraverse(Lc, print1);
}
Ejemplo n.º 22
0
void Insert_Elem(p_CirList list, DataType *pDaTy, int n)
{
	int i;

	for (i = 0; i < n; i++)
	{
		if (ListInsert(list, i, *(pDaTy + i)) == false)
			err_exit("插入错误");
	}

}
Ejemplo n.º 23
0
/*====================================================================
*	操作目的: 为顺序表插入元素
*
*	初始条件: 线性表L已存在
*
*	操作结果: 为顺序表插入元素
*
*	函数参数:
*		SeqList *L	线性表L
*		int length	要插入多少元素,0< length < LISTSIZE
*
*	返回值:	
*		无
======================================================================*/
void Insert_Elem(SeqList *L, int length)
{	
	int i;
	for(i = 0; i < length; i++)
	{
		if(ListInsert(L, i + 1, i + 1) == false ) /* 检查插入是否成功 */
		{
			fprintf(stderr, "插入错误!\n");
			exit(EXIT_FAILURE);
		}
	}
}
Ejemplo n.º 24
0
void Union(List &La, List Lb) {  // 算法2.1
  // 将所有在线性表Lb中但不在La中的数据元素插入到La中
  int La_len,Lb_len,i;
  ElemType e;
  La_len = ListLength(La);          // 求线性表的长度  
  Lb_len = ListLength(Lb);
  for (i=1; i<=Lb_len; i++) {
    GetElem(Lb, i, e);              // 取Lb中第i个数据元素赋给e
    if (!LocateElem(La, e, equal))  // La中不存在和e相同的数据元素
      ListInsert(La, ++La_len, e);  // 插入
  }
} // union
void unionL(SqList *La,SqList Lb)
{
	ElemType e;
	int La_len=ListLength(*La);
	int Lb_len=ListLength(Lb);
	for (int i=1;i<=Lb_len;i++)
	{
		GetElem(Lb,i,&e);
		if (!LocateElem(*La,e))
			ListInsert(La,++La_len,e);
	}
}
Ejemplo n.º 26
0
void main()
{
	SqList *L;
	ElemType e;
	printf("(1)初始化顺序表L\n");
	InitList(L);
	printf("(2)依次采用尾插法插入a,b,c,d,e元素\n");
	ListInsert(L,1,'a');
	ListInsert(L,2,'b');
	ListInsert(L,3,'c');
	ListInsert(L,4,'d');
	ListInsert(L,5,'e');
	printf("(3)输出顺序表L:");
	DispList(L);
	printf("(4)顺序表L长度=%d\n",ListLength(L));
	printf("(5)顺序表L为%s\n",(ListEmpty(L)?"空":"非空"));
	GetElem(L,3,e);
	printf("(6)顺序表L的第3个元素=%c\n",e);
	printf("(7)元素a的位置=%d\n",LocateElem(L,'a'));
	printf("(8)在第4个元素位置上插入f元素\n");
	ListInsert(L,4,'f');
	printf("(9)输出顺序表L:");
	DispList(L);
	printf("(10)删除L的第3个元素\n");
    	ListDelete(L,3,e);
	printf("(11)输出顺序表L:");
	DispList(L);
	printf("(12)释放顺序表L\n");
	DestroyList(L);
}
Ejemplo n.º 27
0
void main()
{
	DLinkList *h;
	ElemType e;
	printf("(1)初始化循环双链表h\n");
	InitList(h);
	printf("(2)依次采用尾插法插入a,b,c,d,e元素\n");
	ListInsert(h,1,'a');
	ListInsert(h,2,'b');
	ListInsert(h,3,'c');
	ListInsert(h,4,'d');
	ListInsert(h,5,'e');
	printf("(3)输出循环双链表h:");
	DispList(h);
	printf("(4)循环双链表h长度=%d\n",ListLength(h));
	printf("(5)循环双链表h为%s\n",(ListEmpty(h)?"空":"非空"));
	GetElem(h,3,e);
	printf("(6)循环双链表h的第3个元素=%c\n",e);
	printf("(7)元素a的位置=%d\n",LocateElem(h,'a'));
	printf("(8)在第4个元素位置上插入f元素\n");
	ListInsert(h,4,'f');
	printf("(9)输出循环双链表h:");
	DispList(h);
	printf("(10)删除h的第3个元素\n");
    	ListDelete(h,3,e);
	printf("(11)输出循环双链表h:");
	DispList(h);
	printf("(12)释放循环双链表h\n");
	DestroyList(h);
}
int main()
{
    StaticLinkList L;
    Status i;
    i=InitList(L);
    printf("初始化L后:L.length=%d\n",ListLength(L));

    i=ListInsert(L,1,'F');
    i=ListInsert(L,1,'E');
    i=ListInsert(L,1,'D');
    i=ListInsert(L,1,'B');
    i=ListInsert(L,1,'A');

    printf("在L的表头依次插入FEDBA后:\nL.data=");
    ListTraverse(L);

    i=ListInsert(L,3,'C');
    printf("\n在L的“B”与“D”之间插入“C”后:\nL.data=");
    ListTraverse(L);

    i=ListDelete(L,1);
    printf("\n在L的删除“A”后:\nL.data=");
    ListTraverse(L);

    printf("\n");

    return 0;
}
Ejemplo n.º 29
0
static WatchedDir* NewWatchedDir(const WCHAR* dirPath) {
    HANDLE hDir = CreateFile(dirPath, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_DELETE | FILE_SHARE_WRITE,
                             nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, nullptr);
    if (INVALID_HANDLE_VALUE == hDir)
        return nullptr;

    WatchedDir* wd = AllocStruct<WatchedDir>();
    wd->hDir = hDir;
    wd->dirPath = str::Dup(dirPath);

    ListInsert(&g_watchedDirs, wd);
    return wd;
}
Ejemplo n.º 30
0
void main()
{
	LinkList L;
	ElemType e;
	int j;
	Status i;
	InitList(L);
	i = ListEmpty(L);
	printf("L是否空 i = %d (1:空 0:否)\n", i);
	ListInsert(L, 1, 3);
	ListInsert(L, 2, 5);
	i = GetElem(L, 1, e);
	j = ListLength(L);
	printf("L中的数据元素个数=%d, 第一个数据元素的值为%d.\n", j, e);
	printf("L中的数据元素依次为:");
	ListTraverse(L, print);
	PriorElem(L, 5, e);
	printf("5前面的元素的值为%d.\n", e);
	NextElem(L, 3, e);
	printf("3后面的元素的值为%d.\n", e);
	printf("L是否空 %d(1:空 0:否)\n", ListEmpty(L));
	j = LocateElem(L, 5, equal);
	if ( j )
		printf("L的第%d个元素为5.\n", j);
	else
		printf("不存在值为5的元素.\n");
	i = ListDelete(L, 2, e);
	printf("删除L的第2个元素:\n");
	if ( i )
	{
		printf("删除的元素值为%d, 现在L中的数据元素依次为", e);
		ListTraverse(L, print);
	}
	else
		printf("删除不成功!\n");
	ClearList(L);
	printf("清空L后, L是否空:%d (1:空 0:否)\n", ListEmpty(L));
	DestroyList(L);
}