void romove_node(ListNode** phead, ListNode* p, ListNode* removed)
{
if(p==NULL)
*phead=(*phead)->link;
else
p->link = removed->link;
free(removed);
}
void romove_node(ListNode** phead, ListNode* p, ListNode* removed)
{
if(p==NULL)
*phead=(*phead)->link;
else
p->link = removed->link;
free(removed);
}
#define MAX_LIST_SIZE 100
typedef int element;
typedef struct {
int list[MAX_LIST_SIZE];
int length;
}ArrayListType;
//오류처리 함수
void error(char* message)
{
fprintf(stderr,"%s\n",message);
exit(1);
}
//리스트 초기화
void init(ArrayListType* L)
{
L->length=0;//(*L).length=0;
}
//리스트가 비어있으면 1을반환
//그렇지 않으면 0을 반환
int is_empty(ArrayListType* L)
{
return L->length=0;
}
//리스트가 가득 차있으면 1을 반환
//그렇지 않으면 0을 반환
int is_full(ArrayListType* L)
{
return L->length == MAX_LIST_SIZE;
}
//리스트 출력
void display(ArrayListType* L)
{
int i;
for(i=0;i<L->length ; i++)
printf("%d\n",L->list[i]);
}
//position 삽입하고자 하는 위치
//item 삽입하고자하는자료
void add(ArrayListType* L,int position,element item)
{
if(!is_full(L) && (position>=0) && (position <= L->length))
{
int i;
for(i=(L->length-1) ; i>=position ; i--)
L->list[i+1] = L->list[i];
L->list[position] = item;
L->length++;
}
}
//position 삭제하고자 하는 위치
//반환값 삭제되는 자료
element delete(ArrayListType* L, int position)
{
int i;
element item;
if(position <0 || position >= L->length)
error("오류");
item=L->list[position];
for(i=position ; i<(L->length-1) ; i++)
L->list[i]=L->list[i+1];
L->length--;
return item;
}
main()
{
ArrayListType list1;
ArrayListType* plist;
init(&list1);
add(&list1,0,10);
add(&list1,0,20);
add(&list1,0,30);
display(&list1);
//메모리동적할당
plist = (ArrayListType*)malloc(sizeof(ArrayListType));
init(plist);
add(plist,0,10);
add(plist,0,20);
add(plist,0,30);
display(plist);
free(plist);
}