목록이 C의 행렬 행을 가리키는 연결 목록 배열을 만드는 방법은 무엇입니까?

마르코 마이스토로 비치

나는 유형이 있습니다 :

typedef struct node
{
    double data;
    struct node * next;
}NODE;

연결된 목록 노드를 나타냅니다.

나는 기능이있다 :

void add(NODE ** head, double data)
{
    NODE * new = NULL;
    new = malloc(sizeof(NODE));
    new->next = NULL;
    new->data = data;
    if(* head == NULL) * head = new;
    else
    {
        NODE * temp = NULL;
        for(temp = * head; temp->next; temp = temp->next);
        temp->next = new;
    }
}

목록 끝에 새 번호를 추가합니다.

차원 행렬을 기반으로 동적으로 할당 된 'n'연결 목록 배열 (배열의 모든 요소가 목록의 첫 번째 노드를 가리킴)을 형성하고 반환하는 함수 ( 'add'함수 사용)를 작성해야합니다. nxm ', 여기서 k 번째 목록의 요소는 행렬의 k 번째 순서의 요소와 일치해야합니다.

기능 프로토 타입 :

NODE ** mat2arr(double ** matrix, int n, int m)

여기서 '행렬'은 포인터 배열, n 개의 행 및 m 개의 열을 나타냅니다.

이렇게 시도했지만 분할 오류가 발생합니다. 코드를 수정하거나 새로운 아이디어로 다시 작성하려면 어떻게해야합니까? 또한 반환 된 연결 목록 배열에 액세스하여 값을 인쇄 할 수 있습니까?

NODE ** mat2arr(double ** matrix, int n, int m)
{
    NODE ** array_list = NULL;
    array_list = malloc(n * sizeof(NODE *));
    for(int i = 0; i < n; i++)
    {
        NODE * list = NULL;
        for(int j = 0; j < m; j++)
            add(&list, matrix[i][j]);
        array_list[i] = list;
    }
    return array_list;
}

mat2arr 함수 호출 :

NODE ** array_list = NULL;
array_list = mat2arr(matrix, n, m);
//matrix represents a 2D array, a matrix
user3121023

이것은 작동하는 것 같습니다

#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
    double data;
    struct node * next;
}NODE;

NODE * add(NODE * head, double data)
{
    NODE * new = NULL;
    new = malloc(sizeof(NODE));
    new->next = NULL;
    new->data = data;
    if( head == NULL) {
        head = new;
    }
    else
    {
        NODE * temp = head;
        while( temp->next) {
            temp = temp->next;
        }
        temp->next = new;
    }
    return head;
}

NODE ** mat2arr ( int n, int m, double **matrix)
{
    NODE ** array_list = NULL;
    array_list = calloc(n, sizeof(NODE *));
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++) {
            array_list[i] = add(array_list[i], matrix[i][j]);
        }
    }
    return array_list;
}

int main ( void) {
    double **myArray = NULL;
    NODE ** array_list = NULL;

    myArray = calloc ( sizeof *myArray, 5);
    for ( int i = 0; i < 5; ++i) {
        myArray[i] = calloc ( sizeof **myArray, 3);
        for ( int j = 0; j < 3; ++j) {
            myArray[i][j] = ( i + 1) * ( j + 1);
        }
    }

    array_list = mat2arr( 5, 3, myArray);
    for(int i = 0; i < 5; i++) {
        NODE * each = array_list[i];
        while ( each) {
            printf ( "data %f\n", each->data);
            each = each->next;
        }
        printf ( "\n");
    }
    for(int i = 0; i < 5; i++) {
        NODE * each = array_list[i];
        while ( each) {
            NODE *temp = each;
            each = each->next;
            free ( temp);
        }
        free ( myArray[i]);
    }
    free ( array_list);
    free ( myArray);
    return 0;
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

목록 행렬을 만드는 방법은 무엇입니까?

분류에서Dev

노드가 행렬 인 연결 목록을 초기화하는 방법은 무엇입니까?

분류에서Dev

노드가 행렬 인 연결 목록을 초기화하는 방법은 무엇입니까?

분류에서Dev

C ++에서 연결 목록을 만드는 방법은 무엇입니까?

분류에서Dev

css 및 html로 행에 세 개의 열이있는 목록을 만드는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

파이썬의 목록에서 행렬 또는 2D 목록을 만드는 방법은 무엇입니까?

분류에서Dev

데이터 프레임의 목록 행을 문자열로 만드는 방법은 무엇입니까?

분류에서Dev

foreach : 여러 반복에서 목록의 두 행렬을 결합하는 방법은 무엇입니까?

분류에서Dev

C에서 여러 요소로 이중 연결 목록을 정렬하는 방법은 무엇입니까?

분류에서Dev

파이썬이 목록 목록을 열 행렬로 반환하는 방법은 무엇입니까?

분류에서Dev

객체의 배열 목록을 정렬하는 방법은 무엇입니까?

분류에서Dev

연결 목록의 연결 목록을 만드는 방법

분류에서Dev

연결 목록의 연결 목록을 만드는 방법

분류에서Dev

라벨 파이썬 목록에서 발생 행렬을 만드는 빠른 방법은 무엇입니까?

분류에서Dev

void 함수로 연결 목록을 만드는 방법은 무엇입니까?

분류에서Dev

Excel 셀의 목록에있는 항목을 다른 목록에 연결하는 방법은 무엇입니까?

분류에서Dev

다른 클래스의 연결 목록을 만드는 방법은 무엇입니까?

분류에서Dev

배열 내부의 목록에서 두 개의 목록을 만드는 방법은 무엇입니까?

분류에서Dev

이전 목록의 항목으로 새 목록을 만드는 방법은 무엇입니까?

분류에서Dev

행을 그룹화하고 셀 연결을 r의 목록 형식으로 배치하는 방법은 무엇입니까?

분류에서Dev

목록 내에서 행렬을 작동하는 방법은 무엇입니까?

분류에서Dev

정의 목록을 정렬 된 목록과 결합하는 올바른 방법은 무엇입니까?

분류에서Dev

목록의 행을 QSqlTableModel에 삽입하는 방법은 무엇입니까?

분류에서Dev

Ruby에서이 접근 방식으로 루프 연결 목록을 만드는 방법은 무엇입니까?

분류에서Dev

배열을 데이터 목록 요소에 연결하는 방법은 무엇입니까?

분류에서Dev

이 단일 연결 목록을 사용하는 방법은 무엇입니까?

분류에서Dev

postgres 함수가 연결된 목록을 나타내는 행을 재정렬하는 방법은 무엇입니까?

분류에서Dev

벡터 목록을 열이나 행렬로 분할하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    목록 행렬을 만드는 방법은 무엇입니까?

  2. 2

    노드가 행렬 인 연결 목록을 초기화하는 방법은 무엇입니까?

  3. 3

    노드가 행렬 인 연결 목록을 초기화하는 방법은 무엇입니까?

  4. 4

    C ++에서 연결 목록을 만드는 방법은 무엇입니까?

  5. 5

    css 및 html로 행에 세 개의 열이있는 목록을 만드는 방법은 무엇입니까?

  6. 6

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

  7. 7

    파이썬의 목록에서 행렬 또는 2D 목록을 만드는 방법은 무엇입니까?

  8. 8

    데이터 프레임의 목록 행을 문자열로 만드는 방법은 무엇입니까?

  9. 9

    foreach : 여러 반복에서 목록의 두 행렬을 결합하는 방법은 무엇입니까?

  10. 10

    C에서 여러 요소로 이중 연결 목록을 정렬하는 방법은 무엇입니까?

  11. 11

    파이썬이 목록 목록을 열 행렬로 반환하는 방법은 무엇입니까?

  12. 12

    객체의 배열 목록을 정렬하는 방법은 무엇입니까?

  13. 13

    연결 목록의 연결 목록을 만드는 방법

  14. 14

    연결 목록의 연결 목록을 만드는 방법

  15. 15

    라벨 파이썬 목록에서 발생 행렬을 만드는 빠른 방법은 무엇입니까?

  16. 16

    void 함수로 연결 목록을 만드는 방법은 무엇입니까?

  17. 17

    Excel 셀의 목록에있는 항목을 다른 목록에 연결하는 방법은 무엇입니까?

  18. 18

    다른 클래스의 연결 목록을 만드는 방법은 무엇입니까?

  19. 19

    배열 내부의 목록에서 두 개의 목록을 만드는 방법은 무엇입니까?

  20. 20

    이전 목록의 항목으로 새 목록을 만드는 방법은 무엇입니까?

  21. 21

    행을 그룹화하고 셀 연결을 r의 목록 형식으로 배치하는 방법은 무엇입니까?

  22. 22

    목록 내에서 행렬을 작동하는 방법은 무엇입니까?

  23. 23

    정의 목록을 정렬 된 목록과 결합하는 올바른 방법은 무엇입니까?

  24. 24

    목록의 행을 QSqlTableModel에 삽입하는 방법은 무엇입니까?

  25. 25

    Ruby에서이 접근 방식으로 루프 연결 목록을 만드는 방법은 무엇입니까?

  26. 26

    배열을 데이터 목록 요소에 연결하는 방법은 무엇입니까?

  27. 27

    이 단일 연결 목록을 사용하는 방법은 무엇입니까?

  28. 28

    postgres 함수가 연결된 목록을 나타내는 행을 재정렬하는 방법은 무엇입니까?

  29. 29

    벡터 목록을 열이나 행렬로 분할하는 방법은 무엇입니까?

뜨겁다태그

보관