반응형
SMALL

연결 리스트에서 노드의 삽입과 삭제

연결 리스트의 마지막에 삽입 연산(1-1)

void addNode(linkedList_h* H, int x) {
//리스트 마지막 노드에 삽입 연산하며, x값은 100이라고 가정함
listNode* NewNode;
listNode* LastNode;
NewNode = (listNode*)malloc(sizeof(listNode));
NewNode → data = x;
NewNode → link = NULL;

- NewNode의 생성

 

 

연결 리스트의 마지막에 삽입 연산(1-2)

voidaddNode(linkedList_h*H,intx){
	if( H->head == NULL) { // 현재 리스트가 공백인 경우
			H -> head ->  NewNode;
			return;
	}
	LastNode = H -> head;
	while(LastNode → link != NULL)
		LastNode = LastNode → link;
	LastNode → link = NewNode;			}

 

 

- 삽입 그림 : 현재 리스트가 공백인 경우 (교재 112p,113p)

 

연결 리스트의 마지막에 삽입 연산(1-2)

voidaddNode(linkedList_h*H,intx){
	if( H->head == NULL) { // 현재 리스트가 공백인 경우
			H -> head ->  NewNode;
			return;
	}
	LastNode = H -> head;
	while(LastNode → link != NULL)
		LastNode = LastNode → link;
	LastNode → link = NewNode;			}

- 삽입 그림 : 현재 리스트가 공백이 아닌 경우

 

리스트의 특정 노드 다음에 삽입 연산(2-1)

voidadditNode(linkedList_h*H, listNode*prevNode, intitdata)
{
	//리스트 마지막 노드에 삽입 연산하며,itdata값은 150이라고 가정함
	listNode*NewNode;
	NewNode = (listNode*)malloc(sizeof(listNode));
	NewNode → data = itdata;
	NewNode → link = NULL;

- 리스트의 특정 노드 다음에 삽입 연산

( 삽입 그림 :125페이지,126페이지 그림 )

- prevNode가 NewNode를 먼저 가리킨 모습

 

리스트의 특정 노드 다음에 삽입 연산(2-1)

voidadditNode(linkedList_h*H, listNode*prevNode, intitdata){

NewNode → link = prevNode → link;
prevNode → link = NewNode;
return;
}

- NewNode의 링크 필드 값이 변경된 모습

- prevNode의 링크 필드 값이 변경된 모습

반응형
LIST

+ Recent posts