ArrayList

 

#include<stdio.h>
#define MAX_LIST_SIZE 500

typedef int element;
typedef struct {
	element list[MAX_LIST_SIZE];
	int length;
}ArrayListType;

void Error(char* s)
{
	printf("---<%s>---\n", s);
}

void Init(ArrayListType* pList)
{
	pList->length = 0;
}

int IsEmpty(ArrayListType* pList)
{
	return pList->length == 0;
}

int IsFull(ArrayListType* pList)
{
	return pList->length == MAX_LIST_SIZE;
}

void Add(ArrayListType* pList, int position, element item)
{
	if (!IsFull(pList) && (position >= 0) && (position <= pList->length))
	{
		for (int i = (pList->length - 1); i >= position; i--)
		{
			pList->list[i + 1] = pList->list[i];
		}
		pList->list[position] = item;
		pList->length++;
	}
}

element Delete(ArrayListType* pList, int position)
{
	element item;
	if (position < 0 || position >= pList->length)
	{
		Error("Index Error!!");
		return -1;
	}
	item = pList->list[position];
	for (int i = position ; i <= (pList->length - 1); i++)
	{
		pList->list[i] = pList->list[i+1];
	}
	pList->length--;
	return item;
}
void AddLast(ArrayListType* pList, element item)
{
	if (!IsFull(pList))
	{
		pList->list[pList->length] = item;
		pList->length++;
	}
	else
	{
		Error("List is full!!");
	}
}

void AddFirst(ArrayListType* pList, element item)
{
	if (!IsFull(pList))
	{
		Add(pList, 0, item);
	}
	else
	{
		Error("List is full!!");
	}
}
void DisplayList(ArrayListType* pList)
{
	for (int i = 0; i < pList->length; i++)
	{
		printf("%d ", pList->list[i]);
	}
	printf("\n");
}
void Clear(ArrayListType* pList)
{
	Init(pList);
}

void Replace(ArrayListType* pList, int position, element item)
{
	pList->list[position] = item;

}
int IsInList(ArrayListType* pList, element item)
{
	for (int i = 0; i < pList->length; i++)
	{
		if (pList->list[i] == item)
		{
			return i;
		}
	}
	return -1;
}

element GetEntry(ArrayListType* pList, int position)
{
	if (position >= pList->length || position < 0)
	{
		Error("Index Error!!");
		return -1;
	}
	return pList->list[position];
}
int GetLength(ArrayListType* pList)
{
	return pList->length;
}

int main(void)
{
	ArrayListType myList;
	Init(&myList);
	AddLast(&myList, 1);
	AddLast(&myList, 2);
	AddLast(&myList, 3);
	AddLast(&myList, 4);
	AddLast(&myList, 5);

	AddFirst(&myList, 99);
	Add(&myList, 2, 77);

	DisplayList(&myList);
	Delete(&myList, 6);
	DisplayList(&myList);

	Replace(&myList, 3, 55);
	DisplayList(&myList);

	printf("%d\n", IsInList(&myList, 88));
	printf("%d\n", GetEntry(&myList,3));
	printf("%d\n", GetLength(&myList));

	return 0;
}

 

LinkedList ( ListNode* GetLast(ListNode* pHead) 구현하기)

#include<stdio.h>
#include <stdlib.h>

typedef int element;
typedef struct ListNode
{
	element data;
	struct ListNode* link;
}ListNode;

ListNode* CreateNode(element data)
{
	ListNode* p = (ListNode*)malloc(sizeof(ListNode));
	p->data = data;
	p->link = NULL;
	return p;
}

void InsertNode(ListNode* *pHead, ListNode* pNode, ListNode* newNode) //pNode: front node, newNode: node to be inserted
{
	if (*pHead == NULL)
	{
		*pHead = newNode;
		newNode->link = NULL;
	}
	else if (pNode == NULL)
	{
		newNode->link = *pHead;
		*pHead = newNode;
	}
	else
	{
		newNode->link = pNode->link;
		pNode->link = newNode;
	}


}

void RemoveNode(ListNode** pHead, ListNode* pNode, ListNode* removed) //pNode: front node, removed: node to be removed
{
	if (pNode == NULL)
	{
		*pHead = (*pHead)->link;
		//*pHead = removed->link;
	}
	else
	{
		pNode->link = removed->link;
	}
	free(removed);
}
void Display(ListNode* pHead)
{
	ListNode* p = pHead;
	while (p != NULL)
	{
		printf("%d->", p->data);
		p = p->link;
	}
	printf("\n");
}

ListNode* Search(ListNode* pHead, element x)
{
	ListNode* p = pHead;
	while (p != NULL)
	{
		if (p->data == x)
		{
			return p;
		}
		p = p->link;
	}
	return p;
}

ListNode* GetLast(ListNode* pHead)
{
	ListNode* p = pHead;
	while (p->link != NULL)
	{
		p = p->link;
	}
	return p;
}


int main(void)
{
	ListNode* pHead = NULL;
	ListNode* newNode = CreateNode(1);
	InsertNode(&pHead, NULL, newNode);

	newNode = CreateNode(2);
	InsertNode(&pHead, GetLast(pHead), newNode);
	newNode = CreateNode(3);
	InsertNode(&pHead, GetLast(pHead), newNode);
	newNode = CreateNode(4);
	InsertNode(&pHead, GetLast(pHead), newNode);
	newNode = CreateNode(5);
	InsertNode(&pHead, GetLast(pHead), newNode);

	Display(pHead);

	RemoveNode(&pHead, NULL, Search(pHead, 1));
	Display(pHead);

	RemoveNode(&pHead, Search(pHead,3), Search(pHead, 4));
	Display(pHead);
	return 0;
}

'학원수업 > C언어' 카테고리의 다른 글

C언어 15일차  (0) 2020.10.28
C언어 14일차  (0) 2020.10.27
C언어 12일차  (0) 2020.10.23
C언어 11일차  (0) 2020.10.22
C언어 10일차  (0) 2020.10.21

카카오 신입 공채 1차 코딩 테스트 비밀지도 문제풀기

#include<stdio.h>


int main(void)
{
	
	int arr1[6] = {46, 33, 33 ,22, 31, 50};
	int arr2[6] = {27 ,56, 19, 14, 14, 10};
	int sum[6];
	
	
	for(int i=0; i<6;i++)
	{
		char view[6] ={' ',};
		
		sum[i] = arr1[i] | arr2[i];
		
		
		for (int j = 0; sum[i] > 0; j++)
		{
			if(sum[i]% 2 ==1)
			{
				view[j] ='#';
			}
			
			
			sum[i] /= 2;
			
			
		}
	
		for (int k = 5; k >= 0; k--)
		{
			printf("%c", view[k]);
		}
		printf("\n");
	}
	
	
	
	
	
	
	
	return 0;
}

 

 

 

정렬 코드

 

#include<stdio.h>
#pragma warning (disable:4996) 

void SwapInt(int* a, int* b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}

void PrintArray(int* arr, int len)
{
	printf("[ ");
	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("]\n");
}
void BubbleSort(int* arr, int len)
{

	for (int i = 0; i < len - 1; i++)
	{
		for (int k = 1; k < len - i; k++)
		{
			if (arr[k - 1] > arr[k])
			{
				SwapInt(&arr[k - 1], &arr[k]);
			}

		}
		printf("[ ");
		for (int i = 0; i < len; i++)
		{
			printf("%d ", arr[i]);
		}
		printf("]\n");

	}

}
void SelectionSort(int* arr, int len)
{
	int min;
	int minindex;
	for (int i = 0; i < len - 1; i++)
	{
		min = arr[i];
		minindex = i;
		for (int k = 1 + i; k < len; k++)
		{
			if (min > arr[k])
			{
				min = arr[k];
				minindex = k;
			}

		}
		SwapInt(&arr[i], &arr[minindex]);
		printf("[ ");
		for (int i = 0; i < len; i++)
		{
			printf("%d ", arr[i]);
		}
		printf("]\n");

	}

}
void InsertSort(int* arr, int len)
{
	for (int i = 1; i < len; i++)
	{
		int key = arr[i];
		int j = i - 1;
		while (j >= 0 && key < arr[j])
		{
			arr[j + 1] = arr[j--];
		}
		arr[j + 1] = key;
		printf("[ ");
		for (int i = 0; i < len; i++)
		{
			printf("%d ", arr[i]);
		}
		printf("]\n");

	}
}
void SequencialSort(int* arr, int len)
{
	for (int i = 0; i < len-1; i++)
	{
		for (int j = i+1; j < len; j++)
		{
			if (arr[i] > arr[j])
			{
				SwapInt(&arr[i], &arr[j]);
			}
		}

	}

}



int main()
{
	int a[] = { 20,50,10,80,40,90,30,100,70,60 };
	//BubbleSort(a, sizeof(a) / sizeof(int));
	/*SelectionSort(a, sizeof(a) / sizeof(int));*/
	//InsertSort(a, sizeof(a) / sizeof(int));
	SequencialSort(a, sizeof(a) / sizeof(int));
	PrintArray(a, sizeof(a) / sizeof(int));


	return 0;
}

 

이진수 출력

#include<stdio.h>
#pragma warning (disable:4996) 

int main()
{
	int input=0;
	int binary[100];
	int div = 0;
	printf("10진수 정수 입력:");
	scanf("%d", &input);

	
	for (int i = 0; input > 0; i++)
	{
		binary[i] = input % 2;
		input /= 2;
		div++;
		
	}

	for (int j = div-1; j >= 0; j--)
	{
		printf("%d ", binary[j]);
	}

}

 

'학원수업 > C언어' 카테고리의 다른 글

C언어 14일차  (0) 2020.10.27
C언어 13일차  (0) 2020.10.26
C언어 11일차  (0) 2020.10.22
C언어 10일차  (0) 2020.10.21
C언어 9일차  (0) 2020.10.20

정렬코드

#include<stdio.h>
#pragma warning (disable:4996) 

void SwapInt(int* a, int* b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}

void PrintArray(int* arr, int len)
{
	printf("[ ");
	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("]\n");
}
void BubbleSort(int* arr, int len)
{	
	
	for (int i = 0; i < len - 1; i++)
	{
		for (int k = 1; k < len - i; k++)
		{
			if (arr[k - 1] > arr[k])
			{
				SwapInt(&arr[k - 1], &arr[k]);
			}

		}
		printf("[ ");
		for (int i = 0; i < len; i++)
		{
			printf("%d ", arr[i]);
		}
		printf("]\n");

	}

}
void SelectionSort(int* arr, int len)
{
	int min;
	int minindex;
	for (int i = 0; i < len - 1; i++)
	{
		min = arr[i];
		minindex = i;
		for (int k = 1+i; k < len; k++)
		{
			if (min > arr[k])
			{
				min = arr[k];
				minindex = k;
			}

		}
		SwapInt(&arr[i],&arr[minindex]);
		printf("[ ");
		for (int i = 0; i < len; i++)
		{
			printf("%d ", arr[i]);
		}
		printf("]\n");
		
	}

}



int main()
{
	int a[] = { 20,50,10,80,40,90,30,100,70,60 };
	//BubbleSort(a, sizeof(a) / sizeof(int));
	SelectionSort(a, sizeof(a) / sizeof(int));
	PrintArray(a, sizeof(a)/sizeof(int));


	return 0;
}

 

 

 


8방향 체크후 지뢰숫자 출력, 지뢰 접근시 종료
int row, col, sum;

int mine[9][9] = {0,1,0,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0};

 

#include<stdio.h>
#pragma warning (disable:4996) 


int main()
{
	int mine[9][9] = 
	{
	{0,1,1,1,1,0,1,0,0},
	{0,1,0,1,1,1,1,0,1},
	{0,1,1,1,0,1,0,1,0},
	{0,1,0,1,0,0,1,0,1},
	{0,1,0,1,0,0,0,0,0},
	{0,1,0,1,0,0,1,0,1},
	{0,1,0,1,0,0,0,0,0},
	{0,1,0,1,0,0,0,0,0},
	{0,1,0,1,0,0,0,0,0}
	};
	
	while(1)		
	{		
	int x;
	int y;
	int cnt=0;
	printf("좌표입력:");
	scanf("%d %d",&x,&y);
	
	if(x == -1 || y==-1)
	{
		printf("강제종료 \n");
		break;
	}
	
	if(mine[x][y]==1)
	{
		printf("펑\n");
		break;
	}
	for(int i=-1;i<2;i++)
	{
		for(int j=-1; j<2;j++)
		{
			if(x+i>=0 && y+j>=0 && x+i<=8 && y+j<=8)
			{
				cnt += mine[x+i][y+j];
			}
		}	
	}
	printf("주변 지뢰: %d 개\n",cnt);
	}

	return 0;
}





 

 

 

'학원수업 > C언어' 카테고리의 다른 글

C언어 13일차  (0) 2020.10.26
C언어 12일차  (0) 2020.10.23
C언어 10일차  (0) 2020.10.21
C언어 9일차  (0) 2020.10.20
C언어 8일차  (0) 2020.10.19

+ Recent posts