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

주어진 단일 연결 목록의 시작 부분에 노드를 삽입하는 프로그램을 C++로 작성하십시오.

<시간/>

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

단일 연결 목록에 주어진 연결 목록의 시작 부분에 노드를 삽입하는 작업이 있다고 가정해 보겠습니다. 예를 들어,

입력-1 − 1 → 2 → 3 → 4

주어진 연결 리스트의 맨 앞이나 맨 앞에 '5'를 삽입합니다.

출력 − 5 → 1 → 2 → 3 → 4

설명 − 연결 리스트의 맨 앞에 노드를 삽입하면 연결 리스트가 5 → 1 → 2 → 3 → 4로 출력됩니다.

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

처음에는 노드로 구성된 연결 목록을 제공했습니다. 각 노드는 다음 노드에 대한 데이터와 주소를 포함합니다.

이미 노드를 생성했으므로 헤드 노드의 주소를 매개변수로 사용하고 연결 목록의 시작 부분에 삽입해야 하는 데이터와 시작 부분에 데이터를 삽입하는 함수를 만들 것입니다. 이제 새로 삽입된 노드를 머리로 가리킵니다.

  • insertAthead(node*&head, int data) 함수는 헤드 노드의 주소와 우리가 삽입해야 하는 데이터를 취합니다.

  • 새 노드를 만들고 여기에 데이터를 삽입하십시오.

  • 새로 생성된 노드로 헤드를 이동합니다.

  • 연결 목록을 인쇄합니다.

#include네임스페이스 std;class node 사용{ public:int data; 노드*다음; 노드(int d); 데이터=d; 다음 =NULL; }}; 무효 insertAthead(노드*&헤드, 정수 데이터){ 노드*n=새 노드(데이터); n->다음=머리; 헤드=n;} 무효 인쇄(노드*헤드){ 동안(헤드!=NULL){ cout<<헤드->데이터<<"->"; 머리 =머리 -> 다음; }}int main(){ 노드*헤드=NULL; insertAthead(머리,5); insertAthead(헤드,2); insertAthead(head,8); insertAthead(머리,3); 인쇄(머리);}

출력

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

<전>3→8→2→5→

연결 리스트의 시작 부분에 노드 3, 8, 2, 5를 삽입하면 − 3→ 8→ 2→ 5 →와 같은 출력이 생성됩니다.