본문 바로가기

ETC Programmings

C로 ArrayList 구현 +_+ 구조체 배운 기념으루다가 ㅋ

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

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

#define INIT_LENGTH 100;

struct ArrayList
{
 int *dataSet;
 int length;
 int initLength;
} list;

void initList();
void initListSize(int);
void add(int);
void addInIndex(int , int);
void erase(int);
void replace(int, int);
void reset();
void display();
int get(int);
int isFull();
int isEmpty();

void initList()
{
 list.initLength = INIT_LENGTH;
 list.dataSet = calloc(list.initLength,sizeof(int));
 list.length = 0;
}
void add(int value)
{
 list.dataSet[list.length] = value;
 list.length += 1;
}
void addInIndex(int value, int index)
{
 int temp = list.dataSet[index];

 if(index < list.length)
 {
  replace(value, index);
  index += 1;
  addInIndex(temp, index);
 }
 else
  add(temp);  
}

void erase(int index)
{
 int i;

 for (i = index; i < list.length - 1; i++)
  list.dataSet[i] = list.dataSet[i + 1];

 list.length -= 1;
}

void replace(int value, int index)
{
 list.dataSet[index] = value;
}


void display()
{
 int i;
 for (i = 0 ; i< list.length ; i++)
  printf("[ %d ] ", list.dataSet[i]);
 printf("\n");
}
int get(int index)
{
 return list.dataSet[index];
}

void main()
{
 initList();
 add(3);
 add(4);
 add(5);
 addInIndex(333, 0);
 display();
}