숫자/삽입삭제 답변부탁드립니다!!!
훌림목
질문 제목 :
simple linked list 숫자 삽입/삭제
같은 숫자가 들어오면 삭제하고 다른 숫자가 들어오면 삽입하는 프로그램입니다.
ex) 입력 3 - [1]-[2]-[4]- [1]-[2]-[3]-[4], 같은 숫자의 노드가 없으므로 삽입
입력 3 -[1]-[2]-[4],노드 [3] 삭제됨
삽입/삭제함수가 있으나 코드가 길어 main과 search(검색)함수만 넣었습니다.
파란색은 주석이며 빨간색은 질문입니다.
틀린 부분 설명 부탁드립니다.
질문 내용 :
typedef struct DATA{
int num;
struct DATA *next;
}*LINK;
LINK start=NULL;
LINK current=NULL;
LINK pre=NULL;
LINK search(int value);
void insert(int value);
void del(LINK pre);
void print();
void main()
{
int value=0;
while(1)
{
printf(입력: );
scanf(%d, &value);
getchar();
pre=search(value);
//search함수에value(숫자)를 넘겨주고 같은 숫자가 있으면 pre의 주소값을 받아 옵니다.
//같은 숫자가 없으면 NULL을 받아옵니다.
if(pre==NULL)
{
insert(value);
}
else
{
del(pre); //del(&pre); //pre는 노드의 주소값인데 &pre를하면 에러가 납니다?
}
}
}
LINK search(int value)
//search함수는 삽입할지 삭제할지 결정함, 삭제면 pre를 넘겨 삭제할 이전 노드의 주소값을 넘겨줌
//pre(current의 이전노드)를 넘겨주는 이유는 current 노드를 삭제하고 전노드와 다음 노드를 연결해주기위함
//LINK가 아닌 void, int search는 에러가 납니다.포인터pre값을return하려면 LINK로 해야 하나요?
{
pre=current=start;
if(start==NULL) //노드가 하나도 없는 경우
{
return NULL; //NULL을 return하고 insert함수로 넘어감
}
if(start)//단 하나의 노드가 존재하는 경우
{
current-num==value; //error: code has no effect, 첫노드의 숫자와 같은지 검사
return pre; //같으면삭제해야함으로 pre return, 아직 current와 pre는 같은 곳을 가리킴
}
current=pre-next; //첫 노드 다음(두번째 노드)부터는 pre를 current뒤에 둠
while(current) //current(현재 노드의 포인터)를 반환하면노드 삭제후전노드와 다음노드 연결시
{//이전 노드의 주소값을 알 수 없으므로 pre를 넘김, current접근시pre-next로 접근함
if(current-num==value) //같은 값이면
{
return pre;//dle함수로 pre를 return
}
pre=pre-next;//pre와 current를 다음으로 이동시킴
current=current-next;
}
return NULL; //다 검사했는데도 같은 숫자가 없을 경우 NULL을 return, insert함수로 넘어감
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |