C/리스트

리스트 구현, 삽입, 삭제 소스코드

appmaster 2020. 6. 9. 16:34
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <conio.h>
#define MAX_LIST_SIZE 100


typedef int element;

typedef struct {
	element array[MAX_LIST_SIZE];
	int size;
}ArrayListType;

void init(ArrayListType* L) {
	L->size = 0;
}

int is_empty(ArrayListType* L) {
	return L->size == 0;
}

int is_full(ArrayListType* L) {
	return L->size == MAX_LIST_SIZE;
}

void print_list(ArrayListType* L) {
	int i;
	for (i = 0; i < L->size; i++) {
		printf("%d ", L->array[i]);
	}
	printf("\n");
}

insert_last (ArrayListType* L, int item) {
	if (!is_full(L)) {
		item = L->array[L->size];
		L->size++;
	}
}

insert (ArrayListType* L, int pos, int item) {
	if ((!is_full(L)) && (pos >= 0) && (pos <= L->size)) {
		for (int i = (L->size - 1); i >= pos; i--) {
			L->array[i + 1] = L->array[i];
		}
		L->array[pos] = item;
		L->size++;
	}
}

int delete(ArrayListType* L, int pos) {
	element item;
	item = L->array[pos];
	for (int i = pos; i < (L->size - 1); i++) {
		L->array[i] = L->array[i + 1];
	}
	L->size--;
	return item;
}


int main(void) {

	ArrayListType list;
	init(&list);

	insert(&list, 0, 10);
	insert(&list, 0, 20);
	insert(&list, 0, 30);
	insert_last(&list, 40);
	delete(&list, 0);
	print_list(&list);


	return 0;
}