처음에 빈 노드를 추가하는 연결 목록 추가 기능

칼빈
            struct node{

                char name[50];
                double grade;
                struct node* next;


            };





            void append(struct node* root){

                int n;

                printf("Enter the number of students: ");
                scanf("%d",&n);

                while(n !=0){

                    struct node* temp;

                    temp=(struct node*)malloc(sizeof(struct node));

                    printf("\nEnter the name of the student: ");
                    scanf("%s",&temp->name);
                    printf("\nEnter the grade for the student named %s: ",temp->name);
                    scanf("%f",&temp->grade);
                    temp->next=NULL;

                    if(root==NULL){
                       root=temp;
                    }else{
                        struct node* iterate=root;

                        while(iterate->next != NULL){

                            iterate=iterate->next;
                        }

                        iterate->next=temp;

                    }

                n--;
                }


            }

int listLength(struct node* root){

    struct node* temp = root;
    int counter=0;

    while(temp !=NULL){

        counter++;
        temp=temp->next;
    }

    return counter;

}

      int main()
        {
            struct node* root = NULL;

            append(&root);
            //printList(&root);
            printf("Node length: %d",listLength(&root));
            return 0;
        }

이것이 제가 연결 목록으로 시작하는 한 제가 가지고있는 것입니다. 함수를 사용하여 여러 연결 목록에 추가 할 수 있도록 만들려고했습니다. 그래서 메인에 다른 루트 포인터를 만들고 노드를 추가하기위한 매개 변수로 append 함수를 호출합니다.

이것은 작동하는 것처럼 보이지만 목록 시작 부분에 빈 노드를 추가합니다. 이 노드에는 데이터가 없습니다. 예를 들어 4 명의 학생을 목록에 추가하면 nodeLength 함수는 5를 반환합니다.

user2736738
        struct node{
            char name[50];
            double grade;
            struct node* next;
        };
        struct node * append(struct node* root){
            int n;
            printf("Enter the number of students: ");
            scanf("%d",&n);
            while(n !=0){
               struct node* temp;
                temp=(struct node*)malloc(sizeof(struct node));
                printf("\nEnter the name of the student: ");
                scanf("%s",&temp->name);
                printf("\nEnter the grade for the student named %s: ",temp->name);
                scanf("%f",&temp->grade);
                temp->next=NULL;
                if(root==NULL){
                   root=temp;
                }else{
                    struct node* iterate=root;
                    while(iterate->next != NULL){
                        iterate=iterate->next;
                   }
                    iterate->next=temp;
                    root=iterate;
                }
            n--;
            }
      return root;            }

 int nodeLength(struct node* root){
       struct node* temp = root;
       int counter=0;
       while(temp !=NULL){
           counter++;
           temp=temp->next;
       }
      return counter;
}
int main()
{
      struct node* root = NULL;
      root= append(root);
      //printList(&root);
      printf("Node length: %d",nodeLength(root));
      return 0;
}

이 코드를 확인하여 조금 이해하십시오. 더 설명하겠습니다.

그리고 반환 유형을 캐스트하지 마십시오 malloc.

매개 변수를 올바르게 변경 한 경우 여기에서 수행하는 작업이 제대로 작동 struct node**하지만 예와 같이 더 쉽게 수행 할 수 있습니다 (위에 표시된 예). 이중 포인터를 사용하는 것보다 자연스럽고 직관적입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

연결 목록에 노드를 추가하는 기능이 작동하지 않음 | 씨

분류에서Dev

연결 목록에 노드를 추가하는 재귀 함수 만들기

분류에서Dev

연결 목록에 노드 추가

분류에서Dev

연결 목록에 노드 추가

분류에서Dev

연결 목록에 끝 노드 추가

분류에서Dev

함수를 사용하여 연결 목록에 노드 추가

분류에서Dev

연결 목록에 노드를 추가하는 다양한 방법

분류에서Dev

연결 목록 만들기 + 새 노드 추가 + 목록 인쇄 및 작동하지 않는 이유를 알 수 없음

분류에서Dev

내 연결 목록에 치료 기능을 추가하는 방법

분류에서Dev

연결 목록에 노드를 추가하지 못했습니다.

분류에서Dev

연결 목록의 특정 노드에 연결 목록을 추가하는 방법은 무엇입니까?

분류에서Dev

이중 연결 목록에 노드를 추가하면 첫 번째 노드를 제외한 모든 노드가 삭제되는 이유는 무엇입니까?

분류에서Dev

기존 목록에 기능 빈도 추가

분류에서Dev

Java에서 이중 연결 목록에 노드를 추가하는 방법은 무엇입니까?

분류에서Dev

연결된 목록-새 노드 추가가 작동하지 않음

분류에서Dev

C에서 연결 목록에 노드를 추가 할 때 EXC_BAD ACCESS

분류에서Dev

C ++의 연결 목록에 새 노드를 추가하는 동안 프로그램이 충돌합니다.

분류에서Dev

단일 연결 목록의 시작 부분에 노드를 추가하는 방법은 무엇입니까?

분류에서Dev

노드에 빈 포인터가 포함 된 연결 목록 인쇄

분류에서Dev

C의 연결 목록 끝에 새 노드 추가

분류에서Dev

연결 목록에 배열 노드 추가

분류에서Dev

빈 노드를 초기화하지 않고 연결 목록 만들기

분류에서Dev

목록에 새 요소를 추가하는 기능

분류에서Dev

둘 이상의 노드를 추가 했는데도 연결된 목록에 노드가 하나만있는 이유는 무엇입니까?

분류에서Dev

노드를 추가하는 동안 단일 연결 목록 오류

분류에서Dev

C에서 연결된 목록의 끝에 노드를 추가하면 스택 덤프가 발생 함

분류에서Dev

연결 목록에 삽입하는 동안 빈도 수 가져 오기

분류에서Dev

연결 목록에서 내 꼬리 노드를 추적하는 방법

분류에서Dev

연결 목록에서 노드를 삭제하는 코드가 맞습니까?

Related 관련 기사

  1. 1

    연결 목록에 노드를 추가하는 기능이 작동하지 않음 | 씨

  2. 2

    연결 목록에 노드를 추가하는 재귀 함수 만들기

  3. 3

    연결 목록에 노드 추가

  4. 4

    연결 목록에 노드 추가

  5. 5

    연결 목록에 끝 노드 추가

  6. 6

    함수를 사용하여 연결 목록에 노드 추가

  7. 7

    연결 목록에 노드를 추가하는 다양한 방법

  8. 8

    연결 목록 만들기 + 새 노드 추가 + 목록 인쇄 및 작동하지 않는 이유를 알 수 없음

  9. 9

    내 연결 목록에 치료 기능을 추가하는 방법

  10. 10

    연결 목록에 노드를 추가하지 못했습니다.

  11. 11

    연결 목록의 특정 노드에 연결 목록을 추가하는 방법은 무엇입니까?

  12. 12

    이중 연결 목록에 노드를 추가하면 첫 번째 노드를 제외한 모든 노드가 삭제되는 이유는 무엇입니까?

  13. 13

    기존 목록에 기능 빈도 추가

  14. 14

    Java에서 이중 연결 목록에 노드를 추가하는 방법은 무엇입니까?

  15. 15

    연결된 목록-새 노드 추가가 작동하지 않음

  16. 16

    C에서 연결 목록에 노드를 추가 할 때 EXC_BAD ACCESS

  17. 17

    C ++의 연결 목록에 새 노드를 추가하는 동안 프로그램이 충돌합니다.

  18. 18

    단일 연결 목록의 시작 부분에 노드를 추가하는 방법은 무엇입니까?

  19. 19

    노드에 빈 포인터가 포함 된 연결 목록 인쇄

  20. 20

    C의 연결 목록 끝에 새 노드 추가

  21. 21

    연결 목록에 배열 노드 추가

  22. 22

    빈 노드를 초기화하지 않고 연결 목록 만들기

  23. 23

    목록에 새 요소를 추가하는 기능

  24. 24

    둘 이상의 노드를 추가 했는데도 연결된 목록에 노드가 하나만있는 이유는 무엇입니까?

  25. 25

    노드를 추가하는 동안 단일 연결 목록 오류

  26. 26

    C에서 연결된 목록의 끝에 노드를 추가하면 스택 덤프가 발생 함

  27. 27

    연결 목록에 삽입하는 동안 빈도 수 가져 오기

  28. 28

    연결 목록에서 내 꼬리 노드를 추적하는 방법

  29. 29

    연결 목록에서 노드를 삭제하는 코드가 맞습니까?

뜨겁다태그

보관