数据结构实验之链表一:顺序建立链表

Problem Description
输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立的单链表,输出这些数据。
Input
第一行输入整数的个数N;
第二行依次输入每个整数。
Output
输出这组整数。
Sample Input
8
12 56 4 6 55 15 33 62
Sample Output
12 56 4 6 55 15 33 62
Hint

不得使用数组!

#include <stdio.h>
#include <stdlib.h>
struct node
{
    int data;
    struct node *next;
};
int main()
{
    int i,n;
    struct node *p,*head,*q;
    head = (struct node *)malloc (sizeof(struct  node));//建立一个头结点
    head ->next =NULL;//建立一个空链表
    q=head;
    scanf("%d",&n);
    for(i = 1;i<=n;i++)
    {

        p = (struct node *)malloc(sizeof (struct node));//给p分配一个空间
        scanf("%d",&p->data);
        p->next = NULL;
        q->next = p;
        q=p;//连接
    }
    p = head ->next;//令p为第一个数据
    while (p)//输出
    {
        if(p->next)
            printf("%d ",p->data);
        else
            printf("%d\n",p->data);
        p = p->next;
    }
    return 0;
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我来回复。7-1 数据结构实验链表一:顺序建立链表是一道链表实验题目,要求学生使用顺序存储的方式建立链表,并实现链表的基本操作,如插入、删除、查找等。这道题目可以帮助学生深入理解链表的原理和实现方式,提高其对数据结构的理解和应用能力。 ### 回答2: 链表是一种常见的数据结构,它是由一系列结点组成的线性结构。结点包括两部分内容,一部分是存储数据素,另一部分是指向下一个结点的指针。链表的优点在于可以动态地增加、删除结点,因此它常用于需要频繁增删数据的场合。 本次实验是链表的第一部分,即顺序建立链表顺序建立链表指的是从头到尾依次输入结点,将其链接在一起形成链表。具体实现方法如下: 1. 定义一个结点结构体,包含存储数据素和指向下一个结点的指针。 2. 在主函数中定义一个结点,头结点数据素可以不存储有效数据,仅用于方便遍历链表。 3. 通过循环输入数据,并将数据存储在新结点中。 4. 将新结点的指针指向头结点指向的下一个结点,再将头结点的指针指向新结点,即完成了新结点的插入。 5. 继续输入一个数据,直到输入完毕。 6. 最后遍历链表输出所有数据顺序建立链表的算法简单易懂,适合初学者入门。但是该算法的缺点在于它需要依次遍历链表,时间复杂度较高,因此在数据量较大时效率会比较低。此外,该算法只能按照输入顺序依次插入数据,不能根据数据的大小或其他规则来插入新结点,因此在一些需要按照某种规则排序的场合可能无法满足需求。 总之,顺序建立链表链表的一种基本实现方法,掌握该算法对于学习其他链表操作是非常有帮助的。 ### 回答3: 链表数据结构中很重要的一种,它可以实现灵活的插入、删除、查找等操作。其中,顺序建立链表链表的一种常见方法。 顺序建立链表的过程中,我们需要先定义一个节点结构体,例如: typedef struct node{ int data; // 数据 struct node* next; // 指针 }Node; 在这个结构体中,有一个数据用来存储节点的值,还有一个指针用来指向下一个节点。接下来,我们可以通过输入数据来构建链表。 具体实现方法是,先定义一个头指针,然后通过循环读取输入数据,并将其插入到链表中。例如,以下是一个简单的顺序建立链表的代码: void CreateList(Node *&head){ int data; Node *p, *q; head = NULL; q = head; cin >> data; while(data != -1){ p = new Node; p->data = data; p->next = NULL; if(head == NULL){ head = p; q = head; } else{ q->next = p; q = p; } cin >> data; } } 这段代码中,首先定义一个头指针head,将其初始化为NULL。然后依次读取输入数据,直到读取到-1为止。在每次读取数据之后,新建一个节点p,并将输入数据存储在节点的数据中,然后将p插入到链表的尾部。 顺序建立链表的优点是简单快捷,代码实现比较容易,适用于已经知道链表数据顺序的情况。但是其缺点是无法处理插入数据顺序不确定的情况,因此需要使用其他方法进行插入操作,例如头插法或尾插法。 综上所述,链表一个十分重要的数据结构,顺序建立链表链表一个常用构建方法,其优点是简单快捷,但对于插入顺序不确定的数据,需要使用其他方法进行插入操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值