int main(void)
{
	// List의 생성 및 초기화  ////////////
	List list;
	int data;
	ListInit(&list);

	SetSortRule(&list, WhoIsPrecede);

	// 5개의 데이터 저장  ///////////////
	LInsert(&list, 11);  LInsert(&list, 11);
	LInsert(&list, 22);  LInsert(&list, 22);
	LInsert(&list, 33);

	// 저장된 데이터의 전체 출력 ////////////
	printf("현재 데이터의 수: %d \n", LCount(&list));

	if(LFirst(&list, &data))
	{
		printf("%d ", data);
		
		while(LNext(&list, &data)) 
			printf("%d ", data);
	}
	printf("\n\n");

	// 숫자 22을 검색하여 모두 삭제 ////////////
	if(LFirst(&list, &data))
	{
		if(data == 22)
			LRemove(&list);
		
		while(LNext(&list, &data))
		{
			if(data == 22)
				LRemove(&list);
		}
	}

	// 삭제 후 저장된 데이터 전체 출력 ////////////
	printf("현재 데이터의 수: %d \n", LCount(&list));

	if(LFirst(&list, &data))
	{
		printf("%d ", data);
		
		while(LNext(&list, &data))
			printf("%d ", data);
	}
	printf("\n\n");
	return 0;
}
int main(void)
{
	// 양방향 연결 리스트의 생성 및 초기화  ///////
	List list;
	int data;
	ListInit(&list);

	// 8개의 데이터 저장  ///////
	LInsert(&list, 1);  LInsert(&list, 2);
	LInsert(&list, 3);  LInsert(&list, 4);
	LInsert(&list, 5);  LInsert(&list, 6);
	LInsert(&list, 7);  LInsert(&list, 8);

	// 저장된 데이터의 조회  ///////
	if(LFirst(&list, &data))
	{
		printf("%d ", data);

		while(LNext(&list, &data)) 
			printf("%d ", data);
		
		while(LPrevious(&list, &data))
			printf("%d ", data);
		
		printf("\n\n");
	}

	return 0;
}
Esempio n. 3
0
int main(void){
	//ArrayList Create and Init
	List list;
	int data;
	ListInit(&list);

	LInsert(&list, 11);LInsert(&list, 11);
	LInsert(&list, 22);LInsert(&list, 22);
	LInsert(&list, 33);

	//Saved data print
	printf("Present Data Count : %d\n",LCount(&list));

	if(LFirst(&list, &data)){
		printf("%d ", data);

		while(LNext(&list, &data)){
			printf("%d ", data);
		}
	}
	printf("\n\n");

	// Search 22 and Delete
	if(LFirst(&list, &data)){
		if(data == 22)
			LRemove(&list);

		while(LNext(&list, &data)){
			if(data == 22)
				LRemove(&list);
		}
	}

	//Presend Data Count
	printf("Present Data Count: %d\n",LCount(&list));

	if(LFirst(&list, &data)){
		printf("%d ", data);

		while(LNext(&list, &data)){
			printf("%d ", data);
		}
	}
	printf("\n\n");
	return 0;
}
Esempio n. 4
0
void PrintOfElem(List * plist)
{
	LData pdata;
	if(LFirst(plist, &pdata))    // 첫 번째 데이터 조회
	{
		printf("%d ", pdata);
		
		while(LNext(plist, &pdata))    // 두 번째 이후의 데이터 조회
			printf("%d ", pdata);
	}
}
Esempio n. 5
0
int main(){
	List list;
	int data;
	ListInit(&list);

	LInsert(&list, 11);LInsert(&list, 11);
	LInsert(&list, 22);LInsert(&list, 22);
	LInsert(&list, 33);

	printf("Present Data Count : %d\n", LCount(&list));

	if(LFirst(&list, &data)){
		printf("%d ", data);

		while(LNext(&list, &data))
			printf("%d ", data);
	}
	printf("\n\n");

	if(LFirst(&list, &data)){
		if(data == 22)
			LRemove(&list);

		while(LNext(&list, &data)){
			if(data == 22)
				LRemove(&list);
		}
	}

	printf("Present Data Count : %d\n",LCount(&list));

	if(LFirst(&list, &data)){
		printf("%d ", data);

		while(LNext(&list, &data))
			printf("%d ", data);
	}
	printf("\n\n");
	return 0;
}
Esempio n. 6
0
void DFShowGraphVertex(ALGraph* pg, int startV)
{
	Stack stack;
	int visitV = startV;
	int nextV;

	StackInit(&stack);
	VisitVirtex(pg, visitV);
	SPush(&stack, visitV);

	
	while( LFirst(&(pg->adjList[visitV]), &nextV) == TRUE ) 
	{
		int visitFlag = FALSE;

		if(VisitVirtex(pg, nextV) == TRUE)  // if nextV is the virtex that was visited 
		{
			SPush(&stack, visitV);			// Push nextV in the stack
			visitV = nextV;
			visitFlag = TRUE;
		}
		else	// if nextV is not the virtex that was visited before   
		{
			while(LNext(&(pg->adjList[visitV]),&nextV) == TRUE)
			{
				if( VisitVirtex(pg, nextV) == TRUE) 
				{
					SPush(&stack, visitV);
					visitV = nextV;
					visitFlag = TRUE;
					break;
				}
			}

		}

		if(visitFlag == FALSE)
		{
			if(SIsEmpty(&stack) == TRUE)
				break;
			else 
				visitV = SPop(&stack);
		}

	}


	memset(pg->visitInfo, 0, sizeof(int) * pg->numOfVertex);

}
Esempio n. 7
0
void ShowGraphEdgeInfo(ALGraph * pg)
{
	int i;
	int vx;

	for(i=0; i<pg->numV; i++)
	{
		printf("%c와 연결된 정점: %", i+65);

		if(LFirst(&(pg->adjList[i]), &vx))
		{
			printf("%c ", vx + 65);

			while(LNext(&(pg->adjList[i]), &vx))
				printf("%c ", vx + 65);
		}
		printf("\n");
	}
}
Esempio n. 8
0
// Print the information of the vertex 
void ShowGraphEdgeInfo(ALGraph* pg)
{
	int i;
	int data;

	for(i= 0; i< pg->numOfVertex; i++)
	{
		printf( "Vertices which are connected with %c : ", i+65);
		if(LFirst(&(pg->adjList[i]),&data)) 
		{
			printf( "%c, ", data+65);

			while(LNext(&(pg->adjList[i]),&data))
			{
				printf("%c ", data+65);
			}
		}
		printf("\n");
	}
}
int main()
{
	/// 리스트의 생성 과 초기화 
	List list;
	int data;

	ListInit(&list);

	// 5개의 데이터를 저장한다. 
	ListInsert(&list, 11);
	ListInsert(&list, 11);
	ListInsert(&list, 22);
	ListInsert(&list, 22);
	ListInsert(&list, 33);


	printf("현재 데이터의수 : %d \n", LCount(&list));

	if(LFirst(&list, &data))
	{

		printf("%d ", data);

		while(LNext(&list, &data))
		{
			printf("%d ", data);
		}
	}


	printf("\n\n");


	if(LFirst(&list, &data))
	{

		if(data == 22)
			LRemove(&list);

		while(LNext(&list, &data))
		{
			if(data == 22)
				LRemove(&list);
		}
	}

	// 삭제를 하고 남아 있는 데이터 수 
	printf("현재 데이터의수 : %d \n", LCount(&list));


	
	if(LFirst(&list, &data))
	{

		printf("%d ", data);

		while(LNext(&list, &data))
		{
			printf("%d ", data);
		}
	}


	printf("\n\n");

	return 0;
}
Esempio n. 10
0
int main(void) {

    CircleList *L1 = (CircleList *)malloc(sizeof(CircleList));
    ListInit(L1);
    int choice;
    int data;

    system("clear");
    while(TRUE) {

        while(TRUE) {
            printf("Select Menu\n");
            printf("0 : Clear screen ");
            printf("1 : Add on head ");
            printf("2 : Add on tail ");
            printf("3 : Show First data ");
            printf("4 : Show next data ");
            printf("5 : Show all data ");
            printf("6 : Delete data ");
            printf("7 : Exit\n");
            printf("select : ");
            scanf("%d", &choice);
            if(0 <= choice && choice <= 7)
                break;
        }

        switch(choice) {
        case CLEARSCREEN:
            system("clear");
            break;
        case HEADADD:
            printf("Add on head.\n");
            printf("Insert number : ");
            scanf("%d", &data);
            if(data < 1)
                break;
            HeadAdd(L1, data);
            printf("%d add completed!\n\n", data);
            break;

        case TAILADD:
            printf("Add on tail.\n");
            printf("Insert number : ");
            scanf("%d", &data);
            if(data < 1)
                break;
            TailAdd(L1, data);
            printf("%d add Completed!\n\n", data);
            break;

        case LFIRST:
            printf("Sort first data.\n");
            printf("\n%d\n\n", LFirst(L1));
            break;

        case LNEXT:
            printf("Sort next data.\n");
            printf("\n%d\n\n", LNext(L1));
            break;

        case SHOWALLDATA:
            printf("\n");
            ShowAllData(L1);
            printf("\n");
            break;

        case DELNODE:
            printf("Do you want to delete? (y:1 / n:2) : ");
            scanf("%d", &choice);
            if(choice == 1)
                printf("%d deleted.\n", DelNode(L1));
            else
                printf("Cancled.\n");
            break;

        case EXIT:
            return 0;
        }
    }
}
int main(void)
{
	List list;
	Point comPos; // 비교할 좌표값
	Point * ppos;

	ListInit(&list);

	//4개의 데이터 저장 
	ppos = (Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 2, 1);
	LInsert(&list, ppos);

	ppos = (Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 2, 2);
	LInsert(&list, ppos);

	ppos = (Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 3, 1);
	LInsert(&list, ppos);

	ppos = (Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 3, 2);
	LInsert(&list, ppos);


	// 저장된 데이터 출력
	printf("현재 데이터의 수 : %d\n", LCount(&list));
	if(LFirst(&list, & ppos))
	{
		ShowPointpos(ppos);

		while(LNext(&list, &ppos))
			ShowPointpos(ppos);
	}
	printf("\n");
	// xpos가 (2 , 0)인 데이터는 모두 삭제를 하자 

	comPos.xpos =2;
	comPos.ypos = 0;

	if(LFirst(&list, &ppos))
	{
		if(PointComp(ppos, &comPos) == 1)
		{
			ppos = LRemove(&list);
			free(ppos);
		}

		while(LNext(&list, &ppos))
		{
			if(PointComp(ppos, &comPos) ==1)
			{
				ppos = LRemove(&list);
				free(ppos);
			}
		}


	}

	// 삭제를 하고 남아있는 데이터 수 
	printf("현재 데이터의 수 : %d\n", LCount(&list));
	if(LFirst(&list, & ppos))
	{
		ShowPointpos(ppos);

		while(LNext(&list, &ppos))
			ShowPointpos(ppos);
	}
	printf("\n");

	return 0;
}
Esempio n. 12
0
int main(){
	List list;
	NameCard* pcard;
	NameCard chPhone;

	ListInit(&list);

	pcard = MakeNameCard("Phantom", "010-1111-2222");
	LInsert(&list, pcard);

	pcard = MakeNameCard("HeadFish", "010-2222-3333");
	LInsert(&list, pcard);

	pcard = MakeNameCard("Mathboy", "010-3333-4444");
	LInsert(&list, pcard);

	printf("Present Data Count : %d\n", LCount(&list));

	if(LFirst(&list, &pcard)){
		ShowNameCardInfo(pcard);

		while(LNext(&list, &pcard))
			ShowNameCardInfo(pcard);
	}

	printf("\n\n");

	strcpy(chPhone.name, "Mathboy");
	strcpy(chPhone.phone, "010-3333-4444");

	if(LFirst(&list, &pcard)){
		if(NameCompare(pcard, "Mathboy")==1){
			ChangePhoneNum(pcard, "010-7777-8888");
		}

		while(LNext(&list, &pcard)){
			if(NameCompare(pcard, "Mathboy")==1){
				ChangePhoneNum(pcard, "010-7777-8888");
			}
		}
	}

	printf("Present Data Count : %d\n", LCount(&list));

	if(LFirst(&list, &pcard)){
		ShowNameCardInfo(pcard);

		while(LNext(&list, &pcard))
			ShowNameCardInfo(pcard);
	}

	printf("\n\n");

	if(LFirst(&list, &pcard)){
		if(NameCompare(pcard, "Mathboy")==1){
			pcard = LRemove(&list);
			free(pcard);
		}

		while(LNext(&list, &pcard)){
			if(NameCompare(pcard, "Mathboy")==1){
				pcard = LRemove(&list);
				free(pcard);
			}
		}
	}
	if(LFirst(&list, &pcard)){
		ShowNameCardInfo(pcard);

		while(LNext(&list, &pcard))
			ShowNameCardInfo(pcard);
	}

	printf("\n\n");
	printf("Present Data Count : %d\n", LCount(&list));

	return 0;
}
Esempio n. 13
0
int main(){
	List list;
	Point compPos;
	Point *ppos;

	ListInit(&list);

	ppos=(Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 2, 1);
	LInsert(&list,ppos);

	ppos=(Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 2, 2);
	LInsert(&list,ppos);

	ppos=(Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 3, 1);
	LInsert(&list,ppos);

	ppos=(Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 3, 2);
	LInsert(&list,ppos);

	printf("Present Data Count : %d\n",LCount(&list));

	if(LFirst(&list,&ppos)){
		ShowPointPos(ppos);

		while(LNext(&list,&ppos))
			ShowPointPos(ppos);
	}
	printf("\n");

	compPos.xpos=2;
	compPos.ypos=0;


	if(LFirst(&list,&ppos)){
		if(PointComp(ppos, &compPos)==1){
			ppos=LRemove(&list);
			free(ppos);
		}
		while(LNext(&list,&ppos)){
			if(PointComp(ppos, &compPos)==1){
				ppos=LRemove(&list);
				free(ppos);
			}
		}
	}

	printf("Present Data Count : %d\n",LCount(&list));


	if(LFirst(&list,&ppos)){
		ShowPointPos(ppos);

		while(LNext(&list,&ppos))
			ShowPointPos(ppos);
	}
	printf("\n");
	return 0;
}
Esempio n. 14
0
int main(void)
{
  // ArrayList 의 생성 및 초기화
  List list;
  int data;
  ListInit(&list);

  // 5개의 데이터 저장
  LInsert(&list, 11);
  LInsert(&list, 11);
  LInsert(&list, 22);
  LInsert(&list, 22);
  LInsert(&list, 33);

  // 저장된 데이터의 전체 출력
  printf("현재 데이터의 수:%d \n", LCount(&list));

  if (LFirst(&list, &data)) // 첫 번째 데이터 조회
  {
    printf("%d ", data);

    while(LNext(&list, &data))  // 두 번째 이후의 데이터 조회
    {
      printf("%d ", data);
    }
  }

  printf("\n\n");

  // 숫자 22를 탐색하여 모두 삭제
  if (LFirst(&list, &data))
  {
    if (data == 22)
    {
      LRemove(&list);
    }
    while (LNext(&list, &data))
    {
      if (data == 22)
      {
        LRemove(&list);
      }
    }
  }

  // 삭제 후 남은 데이터 전체 출력
  printf("현재 데이터의 수: %d \n", LCount(&list));

  if (LFirst(&list, &data))
  {
    printf("%d ", data);

    while (LNext(&list, &data))
    {
      printf("%d ", data);
    }
  }

  printf("\n\n");
  return 0;
}
Esempio n. 15
0
int main(void)
{
	List list;
	Point compPos;
	Point * ppos;

	ListInit(&list);

	/*** 4개의 데이터 저장 ***/
	ppos = (Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 2, 1);
	LInsert(&list, ppos);

	ppos = (Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 2, 2);
	LInsert(&list, ppos);

	ppos = (Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 3, 1);
	LInsert(&list, ppos);

	ppos = (Point*)malloc(sizeof(Point));
	SetPointPos(ppos, 3, 2);
	LInsert(&list, ppos);

	/*** 저장된 데이터의 출력 ***/
	printf("현재 데이터의 수: %d \n", LCount(&list));

	if(LFirst(&list, &ppos))
	{
		ShowPointPos(ppos);
		
		while(LNext(&list, &ppos))
			ShowPointPos(ppos);
	}
	printf("\n");

	/*** xpos가 2인 모든 데이터 삭제 ***/
	compPos.xpos=2;
	compPos.ypos=0;

	if(LFirst(&list, &ppos))
	{
		if(PointComp(ppos, &compPos)==1)
		{
			ppos=LRemove(&list);
			free(ppos);
		}
		
		while(LNext(&list, &ppos)) 
		{
			if(PointComp(ppos, &compPos)==1)
			{
				ppos=LRemove(&list);
				free(ppos);
			}
		}
	}

	/*** 삭제 후 남은 데이터 전체 출력 ***/
	printf("현재 데이터의 수: %d \n", LCount(&list));

	if(LFirst(&list, &ppos))
	{
		ShowPointPos(ppos);
		
		while(LNext(&list, &ppos))
			ShowPointPos(ppos);
	}
	printf("\n");

	return 0;
}
Esempio n. 16
0
int main()
{
	List list;
	NameCard *newCard;
	int i;
	ListInit(&list);

	//1. 3명의 전화번호 정보를, 앞서 우리가 구현한 리스트에 저장한다.
	newCard = MakeNameCard("조현일","01065429759");
	LInsert(&list,newCard);
	newCard = MakeNameCard("김민서","01044450324");
	LInsert(&list,newCard);
	newCard = MakeNameCard("김태윤","01088350650");
	LInsert(&list,newCard);

	
	//2. 특정 이름을 대상으로 탐색을 진행하여, 그 사람의 정보를 출력한다.
	puts("=======[조현일]을 대상으로 탐색=======\n");

	if(LFirst(&list,&newCard)){
		if(!NameCompare(newCard,"조현일"))
			ShowNameCardInfo(newCard);
		while(LNext(&list,&newCard))
			if(!NameCompare(newCard,"조현일"))
				ShowNameCardInfo(newCard);
	}

	//3. 특정 이름을 대상으로 탐색을 진행하여, 그 사람의 전화번호 정보를 변경한다.

	puts("=======[김태윤]를 대상으로 탐색=======\n");

	if(LFirst(&list,&newCard)){
		if(!NameCompare(newCard,"김태윤"))
			ChangePhone(newCard,"01044449999");
		while(LNext(&list,&newCard))
			if(!NameCompare(newCard,"김태윤"))
				ChangePhone(newCard,"01044449999");

		puts("전화번호를 01044449999로 변경완료!\n");
	}


	//4. 특정 이름을 대상으로 탐색을 진행하여, 그 사람의 정보를 삭제한다.

	puts("=======[김민서]를 대상으로 탐색=======\n");

	if(LFirst(&list,&newCard)){
		if(!NameCompare(newCard,"김민서"))
			LRemove(&list);
		while(LNext(&list,&newCard))
			if(!NameCompare(newCard,"김민서"))
				LRemove(&list);

		puts("데이터 삭제완료!\n");
	}
	
	//5. 끝으로 남아있는 모든 사람의 전화번호 정보를 출력한다.

	puts("---남아있는 모든 사람의 전화번호 출력----\n");
	
	if(LFirst(&list,&newCard)){
		ShowNameCardInfo(newCard);

		while(LNext(&list,&newCard))
		ShowNameCardInfo(newCard);
	}

	return 0;
}