단순 연결리스트 질문이요
꽃내음
질문 제목 :단순 연결리스트 질문이요 질문 요약 :단순 연결리스트를 구현 해보았는데 말도 안되는 오류가 나는데 뭔지를 모르겠어요질문 내용 :
#include stdio.h
#include stdlib.htypedef struct noderecord //이중연결리스트 에 사용될 구조체
{
char *date;
noderecord *next; //next는 다음 노드를 가리키게 함
} node;
typedef node* nptr; //nptr 타입이 가리키는 것은 node 타입
typedef struct
{ int count; //리스트 길이를 추적
nptr head; //헤드 포인터로 리스트 전체를 대변함
} listtype;void init(listtype* lptr); //연결리스트 초기화 - head를 할당한다.
void insert(listtype* lptr,int position, char* insertstr); //노드를 삽입한다.
void delete(listtype* lptr,int position); //노드를 삭제 한다.
void retrieve(listtype* lptr,int position, char* insertstr); //타겟 위치의 문자열을 바꿔준다.
bool isempty(listtype* lptr); //노드가 비어있는지 확인한다.
int length(listtype* lptr); //노드의 길이를 구한다.int main()
{
listtype mylist;
char* str = my name is ???;
init(&mylist); //데이터 초기화
insert(&mylist, 1, new york times);
insert(&mylist, 2, wall street journal);
insert(&mylist, 2, fox new);
retrieve(&mylist, 3, str);
delete(&mylist, 2);
if(isempty(&mylist))
printf(리스트가 비어있다...\n);
else
printf(리스트가 차있다..\n); show_data(&mylist); //데이터가 어떻게 저장되어있는지 출력/
printf(str은 : %s,str);
printf(리스트의 길이는 : );
printf(%d\n),length(&mylist); return 0;
}
void init(listtype* lptr) //데이터 초기화 함수
{
lptr-count = 0; //데이터 수를 0으로 세팅
lptr-head = null; //헤드 포인터를 널로 초기화
}
void insert(listtype* lptr,int positnt position, char* insertstr)
{
int i;
if ((position (lptr-count+1)) || (position 1))
printf(삽입 위치가 없습니다. \n); //이격된 삽입 위치 오류
else{
nptr newdate = (node*)malloc(sizeof(node)); //삽입될 노드의 공간 확보
newdate-date = insertstr; //데이터 값 복사
if(position == 1) //첫 위치에 삽입 할 경우
{
newdate-next = lptr-head; //삽입노드가 현재 첫 노드를 가리킴
lptr-head = newdate; //헤드가 삽입 노드를 가리키게 함
}
else //첫 위치가 아닐 경우
{
nptr temp = lptr-head; //헤드 포인터를 temp로 복사
for(i=1; i(position-1); i++)
{
temp = temp-next; //temp가 삽입직전의 노드를 가리키게
}
newdate-next = temp-next; //삽입노드의 next를 설정
temp-next = newdate; //직전 노드가 삽입된 노드를 가리키게
}
lptr-count += 1; //리스트 길이를 늘림
}
}void delete(listtype *lptr, int position)
{
int i;
if (isempty(lptr)) //빈 리스트에서 함수 호출시 오류 (isempty(lptr) 함수 사용)
printf(리스트가 비어있는데 삭제를 하겠다고?);
else if (position (lptr-count) || (position 1)) //위치 요청 오류
printf(삭제위치가 현제 데이터 범위를 벚어나잔아..);
else
{
nptr b = (node *)malloc(sizeof(node)); //백업공간 확보
if (position == 1) //첫 노드를 삭제할 경우
{
nptr b = lptr-head; //삭제될 노드를 가리키는 포인터를 백업
lptr-head = lptr-head-next; //헤드가 둘째 노드를 가리키게
}
else
{
nptr temp = lptr-head;
for (i=1; i (position-1); i++)
temp = temp-next; //temp가 삭제직전 노드를 가리키게
nptr b = temp-next; //삭제될 노드를 가리키는 포인터를 백업
temp-next = b-next; //직전노드가 삭제될 노드 다음 노드를 가리키게
}
lptr-count -=1; //리스트 길이 줄임
free(b); //메모리 공간 반납
}
}void retrieve(listtype *lptr,int position, char* insertstr) //데이터 복사
{
int i;
if (isempty(lptr)) //빈 리스트에서 함수 호출시 오류 (isempty(lptr) 함수 사용)
printf(리스트가 비어있는데 데이터를 바꾸겠다고?);
else if (position (lptr-count) || (position 1)) //위치 요청 오류
printf(교체위치가 현제 데이터 범위를 벚어나잔아..);
else
{
nptr temp = lptr-head; //헤드 포인터를 temp로 복사
for(i=1; i(position); i++)
{
temp = temp-next; //temp가 교체할 노드를 가리키게
}
temp-date = insertstr;
}
}
int length(listtype *lptr)
{
return (lptr-count); //리스트 길이 반환
}
bool isempty(listtype* lptr) //빈공간 /빈공간 확인
{
return (lptr-count == 0); //비어있다면 true
}
void show_data(listtype *lptr)
{
int i=0;
for(; ilptr-count; i++)
{
printf(count : %d ),i+1;
printf( data : %s),lptr-head-date;
}
}------------------코드 내용이고요.. 오류가 구문오류 74개가 나는데 문법상 오류는 없어 보여서요 ㅠㅠ
뭐가 잘못된지 못찾겠어요살려주세요 ㅠㅠ 골머리 터지겠네요 ㅠ
-
큰꽃늘
오류 잡았어요 ㅠ
typedef struct nodeRecord //이중연결리스트 에 사용될 구조체
{
char *Date;
nodeRecord *Next; //Next는 다음 노드를 가리키게 함
} node;
처음 구조체 선언시
nodeRecord *Next; //Next는 다음 노드를 가리키게 함
부분에 그러니깐
- (struct) nodeRecord *Next; //Next는 다음 노드를 가리키게 함
를 넣어야 -
Schokolade
구문 오류와 문법 오류는 같은 말입니다. 오류 내용을 올려보세요.