연결리스트 삭제관련 질문입니다
커피우유
질문 제목 : 연결리스트 삭제관련 질문입니다연결리스트 삭제함수 모르겠어요질문 내용 : 아래는 소스이고 del_node함수를 어떻게 작성해야되는지 감이 안와요 ㅜㅜ
make함수처럼 if문쓰고전노드 후노드 만들어서 처음일때랑 중간에 삭제할때랑 구분해야되나요??
고민끝에 올려봅니다 방법자체를 모르겠음 ㅜㅜ
그리고 del함수안에 if(p-name==name)이게 정상작동되는거 맞나요??
아 그리고 출력결과는삭제전 김 리 박 뜨고 삭제후 김 리 만 동시에 출력되게 한거에요
#includestdio.h
#includestdlib.h
#includestring.h
typedef struct noderecord{
char name[10];
int kor,eng,math,tot;
double avg;
noderecord *next;
}node;
node *make_list(node *head,char name[],int kor,int eng,int math){
node *new_node;
node *p;
new_node=(node*)malloc(sizeof(node));
if(head==null){
strcpy(new_node-name,name);
new_node-kor=kor;
new_node-eng=eng;
new_node-math=math;
new_node-next=null;
head=new_node;
}else{
p=head;
while(p-next!=null) p=p-next;
strcpy(new_node-name,name);
new_node-kor=kor;
new_node-eng=eng;
new_node-math=math;
new_node-next=null;
p-next=new_node;
}
return head;
}
node *get_sum_avg(node *head){
node *p;
p=head;
while(p){
p-tot=p-kor+p-eng+p-math;
p-avg=p-tot/3.0;
p=p-next;
}
return head;
}
node *del_node(node *head,char name[]){
node *p;
p=head;
while(p){
if(p-name==name){
free(p); //괄호안에p가 아닌데 ㅜㅜ 뭔지 모르겟음삭제된 다음 연결도어떤식으로해야할지...
}
p=p-next;
}
return head;
}
void display(node *head){
static int count=0;
node *p;
p=head;
if(count==0) printf(삭제전 리스트\n);
else printf(삭제후 리스트\n);
while(p){
printf(%s %d %d %d %d %0.1f\n,p-name,p-kor,p-eng,p-math,p-tot,p-avg);
p=p-next;
}
count++;
}
int main(void){
node *list=null;
list=make_list(list,kim,90,95,90);
list=make_list(list,lee,95,95,95);
list=make_list(list,park,90,90,90);
list=get_sum_avg(list);
display(list);
list=del_node(list,park);
display(list);
}
-
가림
Node *Del_Node(Node *head,char name[]){
Node *p;
Node *pprev;
p=head;
pprev=head;
while(p){
if(p-name==name){ //이름이 같으면
pprev=p-next; //pprev가 p의next가르키고
free(p); //p는 삭제하고
}else{ //이름이 틀리면
p=p-next; //p랑 pprev둘다 다음노드로 넘어가고 위과정반복!
pprev=pprev-next;
}
}
re
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692483 | C언어 함수, Header | 떠나간그놈 | 2025-04-23 |
2692451 | 이 문제좀 풀어주세요 ^^ | 게자리 | 2025-04-23 |
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
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 |