📜  门| GATE-CS-2015(套装2)|问题 11(1)

📅  最后修改于: 2023-12-03 14:58:30.418000             🧑  作者: Mango

题目介绍

这是GATE-CS-2015(套装2)中的第11道题目,题目涉及了程序的动态内存分配和指针操作。

题目内容

题目给出了如下的C语言代码:

#include<stdio.h>
#include<stdlib.h>
struct node
{
    int data;
    struct node *link;
};

int main()
{
    struct node *p, *q, *start;
    int i, n;
    printf("Enter the number of nodes: ");
    scanf("%d", &n);
    start = NULL;
    for (i=1; i<=n; i++)
    {
        p = (struct node *)malloc(sizeof(struct node));
        printf("Enter the data for node %d: ", i);
        scanf("%d", &p->data);
        p->link = NULL;
        if (start == NULL)
            start = p;
        else
        {
            q = start;
            while (q->link != NULL)
                q = q->link;
            q->link = p;
        }
    }
    /* Code to print the linked list goes here */
    return 0;
}

要求我们编写代码,输出动态分配的结构体变量的地址和存储的数据。

解题思路

该程序使用了动态内存分配,为链表结构体变量分配内存。

在程序中,首先通过malloc()函数为结构体类型node分配内存,并将指针p指向这块内存。接着输入结构体中data成员的值,并将link成员置为空。在进行链表连接时,当start为空时,将start指向p;否则,将新建的结构体变量p添加到链表的尾部。

我们只需要在链表添加完成之后,在程序中遍历链表,输出每个结构体变量的地址和存储的数据即可。

代码实现

/* Code to print the linked list goes here */
printf("\nLinked List Details:\n");
p = start;
while (p != NULL)
{
    printf("Node Address: %p, Data: %d\n", p, p->data);
    p = p->link;
}

返回值

返回的markdown格式代码片段如下所示:

# 题目介绍

这是GATE-CS-2015(套装2)中的第11道题目,题目涉及了程序的动态内存分配和指针操作。

# 题目内容

题目给出了如下的C语言代码:

```c
#include<stdio.h>
#include<stdlib.h>
struct node
{
    int data;
    struct node *link;
};

int main()
{
    struct node *p, *q, *start;
    int i, n;
    printf("Enter the number of nodes: ");
    scanf("%d", &n);
    start = NULL;
    for (i=1; i<=n; i++)
    {
        p = (struct node *)malloc(sizeof(struct node));
        printf("Enter the data for node %d: ", i);
        scanf("%d", &p->data);
        p->link = NULL;
        if (start == NULL)
            start = p;
        else
        {
            q = start;
            while (q->link != NULL)
                q = q->link;
            q->link = p;
        }
    }
    /* Code to print the linked list goes here */
    return 0;
}

要求我们编写代码,输出动态分配的结构体变量的地址和存储的数据。

解题思路

该程序使用了动态内存分配,为链表结构体变量分配内存。

在程序中,首先通过malloc()函数为结构体类型node分配内存,并将指针p指向这块内存。接着输入结构体中data成员的值,并将link成员置为空。在进行链表连接时,当start为空时,将start指向p;否则,将新建的结构体变量p添加到链表的尾部。

我们只需要在链表添加完成之后,在程序中遍历链表,输出每个结构体变量的地址和存储的数据即可。

代码实现

/* Code to print the linked list goes here */
printf("\nLinked List Details:\n");
p = start;
while (p != NULL)
{
    printf("Node Address: %p, Data: %d\n", p, p->data);
    p = p->link;
}

返回值

# 题目介绍
...