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의 역활에 대해 자세히 좀 가르켜주세요. 저녁내내 고민합니다....
바름 2026.01.16
음... 아무래도 책의 이 문장에 제가 현혹된 모양입니다. 오늘 아침에 다시 생각해 보니 이해가 되네요.. new로 생성되기전 node next는 아무것도 아니다. 라는 문장. -_-;; 이것에 현혹된 모양입니다...&nbs
달달항사탕 2026.01.16
링크드리스트를 사용하므로써 장점이 무엇인지부터 아셔야 할것 같네요. 링크드리스트란, c언어 기반에서, 메모리를 필요시 원하는 만큼만 동적으로 할당하기위해서 만들어낸 자료구조중의 하나입니다. 그리고, 동적으로 생성한 객체를 서로 실로
하늘이 2026.01.16
맨 아랫 줄 코드는 노드 객체를 만들면 노드 안에서 또 노드를 만들고 또 만들고 또 만들고 또 만들고...해서리 ..... 버퍼오버플로가 납니다.