Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

주어진 단일 연결 목록에서 첫 번째 노드를 삭제하는 C++ 프로그램

<시간/>

연결 목록은 서로 연결된 여러 노드가 있는 선형 데이터 구조입니다. 각 노드는 데이터 필드와 다음 노드의 주소라는 두 개의 필드로 구성됩니다.

단일 연결 목록이 있고 이 연결 목록에서 첫 번째 노드를 삭제해야 한다고 가정해 보겠습니다. 예를 들어,

입력 1 − 4 → 3 → 2 → 1

출력 − 3 → 2 → 1 →

설명 - '4'는 주어진 단일 연결 리스트의 첫 번째 노드입니다. 첫 번째 노드를 삭제하면 연결 리스트는 3→2→1이 됩니다.

입력 2 − 1 → 2 → 3 →

출력 − 2 → 3 →

설명 − 첫 번째 노드 '1'을 삭제하면 연결 리스트는 2 → 3이 됩니다.

이 문제를 해결하기 위한 접근 방식

처음에는 노드로 구성된 연결 목록이 있습니다. 각 노드는 다음 노드에 대한 데이터와 주소를 포함합니다. 연결 리스트에 데이터를 삽입한 후 첫 번째 노드를 삭제하는 함수를 생성합니다.

따라서 처음에 머리를 가리키고 머리를 다음 노드로 이동하는 임시 포인터를 만듭니다. 이제 임시 노드를 삭제하고 연결 목록을 반환합니다.

  • deleteAthead(node*&head) 함수는 헤드에 대한 포인터를 가져와 연결 목록의 첫 번째 노드를 삭제합니다.

  • 처음에 머리를 가리키는 임시 포인터를 만듭니다.

  • 헤드가 다음 노드로 이동합니다.

  • 임시 포인터를 삭제합니다.

  • 연결 목록을 반환합니다.

예시

#include<iostream>
using namespace std;
int main(){
class node{
   public:
      int data;
      node*next;
      node(int d){
         data=d;
         node*next=NULL;
      }
};
void insertAtFirstNode(node*&head, int data){
   node*n= new node(data);
   n->next= head;
   head=n;
}
void print(node*head){
   while(head!=NULL){
      cout<<head->data<<"->";
      head=head->next;
   }
   cout<<endl;
}
void deleteAtFirst(node*&head){
   if(head==NULL){
      return;
   }
   node*temp=head;
   head= head->next;
   delete temp;
   return;
}
int main(){
   node*head= NULL;
   insertAtFirstNode(head,1);
   insertAtFirstNode(head,2);
   insertAtFirstNode(head,3);
   insertAtFirstNode(head,4);
   deleteAtFirst(head);
   print(head);
}

출력

위의 코드를 실행하면 출력이 다음과 같이 생성됩니다.

3 → 2 → 1 →

주어진 단일 연결 리스트는 4 → 3 → 2 → 1 → 이므로 첫 번째 노드인 4를 삭제하면 연결 리스트는 3 → 2 → 1 →

가 됩니다.