단순 연결 리스트인데 출력결과가 이상하게 나와요.
찬늘봄
질문 제목 : 질문 내용 :
#include stdio.h
#include stdlib.h
#include string.h
#define true 1
#define false 0
typedef struct listnodetype
{
int data;
struct listnodetype* plink;
} listnode;
typedef struct linkedlisttype
{
int currentelementcount;// 현재 저장된 원소의 개수
listnode headernode;// 헤더 노드(header node)
} linkedlist;
linkedlist* creaditlist(linkedlist* plink);
int addelement(linkedlist* plink,int position,int data);
void display(linkedlist* plink);
listnode* getelement(linkedlist* plink,int position);
int getlenth(linkedlist* plink);
int main()
{
linkedlist* plink=null;
plink=creaditlist(plink);
//listnode data;
//원소추가
if(plink != null){
addelement(plink,0,1);
addelement(plink,1,3);
addelement(plink,2,5);
display(plink);
}
return 0;
}
linkedlist* creaditlist(linkedlist* plink)
{
plink=(linkedlist*)malloc(sizeof(linkedlist));
if(plink == null){
puts(헤더노드 메모리 할당 오류!);
return null;
}
memset(plink,0,sizeof(linkedlist));
return plink;
}
int addelement(linkedlist* plink,int position,int data)
{
int ret=false;
int i;
listnode* pnewnode=null;
listnode* pprenode=null;
if(plink != null)
{
if(position = 0 &&
position = plink-currentelementcount){
//새로운원소메모리할당
pnewnode=(listnode*)malloc(sizeof(listnode));
if(pnewnode != null){
pnewnode-data = data;
pnewnode-plink=null;
}
else{
puts(새로운 메모리 할당 오류!);
return ret;
}
//노드탐색
pprenode=&(plink-headernode);
for(i=0; iposition ; i++){
pprenode=pprenode-plink;
}
//노드관계재정립
pnewnode-plink=pprenode-plink;
pprenode-plink=pnewnode;
plink-currentelementcount++;
ret=true;
}
else{
printf(인덱스 오류!\n);
printf(현재 인덱스: [%d], 입력 인덱스: [%d]\n,
plink-currentelementcount,position);
}
}
else{
puts(메모리 할당 오류!);
}
return ret;
}
void display(linkedlist* plink)
{
int i,arrlen;
printf(현재 원소 개수: %d\n,plink-currentelementcount);
arrlen=getlenth(plink);
for(i=0; iarrlen; i++){
printf([%d]: %d\n, i,getelement(plink,i)-data);
}
}
listnode* getelement(linkedlist* plink,int position)
{
int i;
listnode* node=null;
listnode* preturn=null;
if(plink != null){
if(position =0 &&
position plink-currentelementcount){
node=&(plink-headernode);
for(i=0; iposition; i++){
node=node-plink;
}
preturn=node;
}
}
return preturn;
}
int getlenth(linkedlist* plink)
{
int len=0;
if(plink != null){
len=plink-currentelementcount;
}
return len;
}
[0]: 1
[1]: 3
[2]: 5
나와야하는데 0,1,3
으로 나오는데..
왜 그런거죠.?
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2675146 | 단순 연결 리스트인데 출력결과가 이상하게 나와요. | 찬늘봄 | 2024-11-15 |
2675123 | c언어에서 16진수의 사용에 대한 질문입니다.(정확한답만 달아주시길..) (8) | 데이비드 | 2024-11-15 |
2675066 | 초보 연습문제 질문입니다. (1) | 궁수자리 | 2024-11-14 |
2675037 | calloc 질문이요! (1) | ComeOn | 2024-11-14 |
2675007 | c언어와 자바의 차이점은 무엇일까요? (3) | 라와 | 2024-11-14 |
2674977 | return 값 질문해도될까요? (3) | 한추렴 | 2024-11-13 |
2674947 | 책은 이해가 되는데 잘 안되면 어찌해야죠? (3) | 바르고 | 2024-11-13 |
2674921 | c언어 간단한 정의와 변수질문용 | 연블랙 | 2024-11-13 |
2674890 | 포인터와 배열만 이용한 간단한 프로그램인데..이해가 안되요.; (4) | 늘솜 | 2024-11-13 |
2674859 | 한번만 봐주세요~!!(재수정!! 코드 넣어서) | 흰두루 | 2024-11-12 |
2674830 | 프로그램 보안에 관련한 질문입니다. | Sweet | 2024-11-12 |
2674799 | 소스 좀... (2) | 상1큼한렩 | 2024-11-12 |
2674773 | 질문이요^^.. | 찬내 | 2024-11-12 |
2674746 | 10진수를 2진수로 바꾸는프로그램 하다가 막히네요.. | 하림 | 2024-11-11 |
2674667 | IEE754 변환 (2) | 누림 | 2024-11-11 |
2674645 | 리눅스를 윈도우로 바꿔주세요 (1) | 해샘찬 | 2024-11-10 |
2674619 | 계단식 숫자 출력 완성했는데... (10) | 스위트초코 | 2024-11-10 |
2674589 | 외부 함수 쓰는방법...ㅠ | 세움 | 2024-11-10 |
2674564 | 설계좀 ㅎ ㅐ 주 세요 ㅠㅠ | 나로 | 2024-11-10 |
2674541 | 부호질문..! (5) | 새솔 | 2024-11-09 |