리스트 개념에 대해 질문드립니다.
친화력
질문 제목 : 리스트 개념 리스트에 삭제되어진 자료는 어디에 보관이 되어지는걸가요?
질문 내용 : 자료구조에 있는 소스인데요 보시면 정적메모리라 리스트에 삽입을 하게되면 삭제가 되어도 넣어진 자료는
어딘가에서 찾아볼 수 있을 꺼 같은데요..도무지 찾을수가 없네요..제가 잘못알고 있는건지 질문 드립니다.아 이해됐네요- -역시 삭제가 아닌 값을 지우면서 앞에있는 자료와 동일하게 복사되는것이네요
ㅎㅎ
#include stdio.h
#include stdlib.h
#define max_list_size 100typedef int element;
typedef struct{
element 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;
}
//리스트가 비어있으면 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]);
}
//이 함수는 제가 해당 포지션에 저장값 보려고 따로 지정하였습니다.
void sdisplay(arraylisttype *l, int postion){
printf(%d\n, l-list[postion]);
}
// 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;
}void main(){
arraylisttype list1;
arraylisttype *plist;
//list을 정적으로 생성하고 listtype을 가리키는
//포인터를 함수의 매개 변수로 전달
init(&list1);
add(&list1, 0, 10);
add(&list1, 1, 20); display(&list1);
//삽입한 2개의 데이터 전부 삭제
delete(&list1,0);
delete(&list1,0);
//삭제되었는지 확인
display(&list1);
printf(삭제되어진 자료\n);
sdisplay(&list1,0);
sdisplay(&list1,1);
//삭제되어진 자료가 하나만 표시돼네요;배열 2개의 값이 포지션에 어떻게 보이게 할까요;
}