저녁 내내 의문

class Node{

int a;

Node next;

}public class LinkedList{
publci static void main(String args[])

{

//* 입력 버퍼 .. x , y...

// *

//
int x= //리스트에서삭제할 값

int y=//리스트에서 삽입할 값
List obj= List();
obj.create(); //리스트 생성

obj.deleae(x) ;// 리스트 삭제...

... 계속

}

class List(){
Node temp, head=null;
void create(); { .... }

... 다른 것들

}
이런식의 리스트 연산 프로그램인데...

의문이 있다면 처음 클래스 Node next 라는 식의 선언...

이부분은 재귀 호출을 이용한 것 같은데..
매써드 중 리스트 생성 매써드(creadt())를 보면
voidcreate(){

Node last=head;

for (int i=0;i20 ; i=i+2)

{

if (head==null)

{

head=new Node();

head.key=i;

last=head;

}

else

{

temp=new Node();

temp.key=i;

last=temp;

last.next=null;

}

}

}

이런 꼴이 되겠죠. 생성 매서드의 이해는 어려움이 없습니다. 소스 해석을 바란 것은 아니고..많은 분이 도와주셔서 제법잘 이해됐습니다.-_-;;

처음 클래스 class Node 는 기존 next 라는 객체 변수를 가지고 있습니다.

물론 생성 시 head 나 temp로 매모리를 잡았죠.

그럼 이때 next도 Node 클래스가 메모리를 생성하면 값을 가지는(주소를가지는) 변수로 생각할 수 있는 건지요?

가장 큰 의문은 처음 class Node 가 왜 저렇게 생성 됐는지 입니다.

메모리를 생성해야 next를 주소를 나타내는 포인터 처럼 쓰겠죠

그럼 .. 생성시

당연히

class Node(){

int key;

Node next= new Node()

}

라고 Node 클래스를 정의해야 되지 않을까요?

물론 이런 식으로 하니 에러가 나더군요. 그 이유와 이 프로그램에서 Node의 역활에 대해 자세히 좀 가르켜주세요. 저녁내내 고민합니다....

댓글 3

  • 바름 2026.01.16

    음... 아무래도 책의 이 문장에 제가 현혹된 모양입니다. 오늘 아침에 다시 생각해 보니 이해가 되네요.. new로 생성되기전 node next는 아무것도 아니다. 라는 문장. -_-;; 이것에 현혹된 모양입니다...&nbs

  • 달달항사탕 2026.01.16

    링크드리스트를 사용하므로써 장점이 무엇인지부터 아셔야 할것 같네요. 링크드리스트란, c언어 기반에서, 메모리를 필요시 원하는 만큼만 동적으로 할당하기위해서 만들어낸 자료구조중의 하나입니다. 그리고, 동적으로 생성한 객체를 서로 실로

  • 하늘이 2026.01.16

    맨 아랫 줄 코드는 노드 객체를 만들면 노드 안에서 또 노드를 만들고 또 만들고 또 만들고 또 만들고...해서리 ..... 버퍼오버플로가 납니다.

프로그램 개발일반 다른 글

목록