리스트의 삽입에서요..
민트
삽입메인부분이 ...질문 요약 :리스트의 삽입 삭제 프로그램을 짜고있는데요..
insert_node(&list1, NULL, create_node(10, NULL)); 이렇게 입력햇을경우엔
맨앞에 10이 등록되는데 insert_node(&list1, 10, create_node(20, NULL)); 이렇게 하면
10뒤에 20이 들어가야하는거 아닌가요.. 어느게 문제인지 잘모르겟네요 밑에소스 첨부하겟습니다질문 내용 :
#include stdio.h
#include stdlib.h
typedef int element;
//구조체
typedef struct ListNode {
element data;
struct ListNode *link;
} ListNode;
//삽입함수 밑으로 쭉내리셔서 메인쪽도 쫌 봐주세요 ㅠㅠ
void insert_node(ListNode **phead, ListNode *p, ListNode *new_node)
{
if(*phead==NULL)
{
new_node-link = NULL;
*phead = new_node;
}
else if(p==NULL)
{
new_node-link = *phead;
*phead = new_node;
}
else
{
new_node-link = p-link;
p-link = new_node;
}
}
//삭제함수
void remove_node(ListNode **phead, ListNode *p, ListNode *removed)
{
if(p==NULL)
{
*phead = (*phead)-link;
}
else
{
p-link = removed-link;
}
free(removed);
}
//전체 출력
void display(ListNode *head)
{
ListNode *p=head;
while(p!=NULL) {
printf(%d = , p-data);
p=p-link;
}
printf(\n);
}
//노드생성
ListNode *create_node(element data, ListNode *link)
{
ListNode *new_node;
new_node = (ListNode *)malloc(sizeof(ListNode));
if(new_node == NULL) printf(메모리 할당 에러);
new_node-data = data;
new_node-link = link;
return (new_node);
}main()
{
ListNode *list1 = NULL;
ListNode *list2 = NULL;
int s,num,ps;
char X=1;
printf(1삽입 \n2삭제\n :::::);
printf(연산을 선택하세요::::: \n);
scanf(%d,&s);
switch(s)
{
case(1):
while(X!=0)
{
if(list1==NULL)
{
printf(현재 phead==NULL입니다.\n);
printf(삽입할 숫자를 입력하세요(0입력시 종료):);
scanf(%d,&num);
scanf(%d,&X);
insert_node(&list1, NULL, create_node(num, NULL)); //삽입, 노드 생성
display(list1);
}
else
{
printf(삽입할앞노드를 입력하세요:);
scanf(%d,&ps);
printf(삽입할 숫자를 입력하세요(0입력시 종료):);
scanf(%d,&num);
insert_node(&list1, ps, create_node(num, NULL)); //삽입, 노드 생성 //여기서ps자리에 멀넣어야지작동이될련지..
display(list1);
}
}
break;
case(2):
remove_node(&list1, NULL, list1);
display(list1);
break;
}
}
-
큰모듬
질문자꼐서 코딩하신 프로그램은
리스트 생성과 동시에 입력을 합니다.
결국 매 입력시, 동적할당 및 입력을 해주게 되는데
생성과 입력은 따로 해주세요.
ListNode *create_node(element data, ListNode *link)
{
ListNode *new_node;
new_node = (ListNode *)malloc(sizeof(ListNode));
/*
if(new_node == NULL) printf(\메모리 할당 에 -
츠키코
ListNode 10 이런식으로 해도안되고.. 포인터를 입력하란건가....
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2655491 | 키보드 인식, 랜덤 함수 or 헤더 (2) | 별 | 2024-05-20 |
2655471 | 링 버퍼 구현된 소스 인데요.. 이해가 잘안되서요.. | 소심한녀자 | 2024-05-20 |
2655440 | test파일이 안 되요. (2) | 리라 | 2024-05-19 |
2655416 | 고수님들 도움이 절실합니다. (2) | 세리 | 2024-05-19 |
2655361 | 엔터 입력받을때까지 기다리는 getchar (1) | 큰모음 | 2024-05-19 |
2655328 | 함수에서 포인터 (3) | 모아 | 2024-05-18 |
2655299 | 아이콘바꾸는법..? | 소 | 2024-05-18 |
2655271 | scanf 입력받으면 쭉 실행되는.. (5) | ComeOn | 2024-05-18 |
2655184 | 이 세개 프로그램좀 해결해주실.... 고수님들???? (3) | 말달리자 | 2024-05-17 |
2655129 | 다차원 배열 원소들 주소계산하는거 질문이요~ | 터전 | 2024-05-17 |
2655103 | AVRstudio MoveAxis. MoveLine 함수질문 | 앨버트 | 2024-05-16 |
2655072 | 콘솔창의 위치와 크기를 정하고 싶습니다. | 딥레드 | 2024-05-16 |
2655044 | 자료구조랑 online judge site에 대해서 질문있습니다... (1) | 뽀송뽀송 | 2024-05-16 |
2655016 | 별찍기 문제 중 이해안되는 부분이 있어요... | 도전중 | 2024-05-16 |
2654986 | 입력받은 성적을 배열에 저장하기 (3) | 안녕나야 | 2024-05-15 |
2654959 | ===========-이런거 미리 지정하는법 (1) | 김자영 | 2024-05-15 |
2654930 | 도와주십시요 ㅜㅜ 자료구조 ㅜㅜ | 도널드 | 2024-05-15 |
2654881 | PID 모듈 검색 부분 질문합니다 . | 이름없음 | 2024-05-14 |
2654850 | 조건에 만족하는 다음 수를 찾고 싶습니다. | 초엘 | 2024-05-14 |
2654790 | 두파일간 byte단위 txt파일 복사 中 | 슬찬 | 2024-05-14 |