数据结构实验:顺序构建并遍历链表

需积分: 49 0 下载量 58 浏览量 更新于2024-09-05 收藏 1KB MD 举报
"顺序建链表,使用C语言实现" 在数据结构中,链表是一种基本且重要的数据结构,它与数组不同,不连续存储数据,而是通过节点间的指针连接来组织数据。在这个实验中,我们将关注单链表的顺序建立和遍历。 单链表由一系列节点组成,每个节点包含两部分:数据域(存储实际数据)和指针域(指向下一个节点的指针)。链表的头部通常有一个特殊的节点,称为头节点,它的指针域指向链表中的第一个元素节点。 实验的目的是根据输入的整数序列创建一个单链表,并按顺序遍历输出这些整数。题目要求不得使用数组,这意味着我们必须直接在内存中动态分配节点并链接它们。 下面的C语言代码实现了解决此问题的方法: 1. 首先,定义一个结构体`node`来表示链表的节点,包含一个整型数据成员`data`和一个指向下一个节点的指针`next`。 ```c struct node { int data; struct node* next; }; ``` 2. 初始化链表,创建一个头节点`head`,并将其`next`指针设置为`NULL`。`head`用于后续操作的起点。 ```c head = (struct node*)malloc(sizeof(struct node)); head->next = NULL; ``` 3. 创建一个指针`q`指向头节点,用于在链表中移动。 ```c q = head; ``` 4. 读取整数的个数`n`,然后循环`n`次,每次读取一个整数,创建一个新的节点`p`,将读取到的整数存入`p->data`,然后将`p->next`设置为`NULL`。接着,将`q->next`指向`p`,并将`q`更新为`p`,这样就将新节点添加到了链表的末尾。 ```c while (n--) { p = (struct node*)malloc(sizeof(struct node*)); scanf("%d", &p->data); p->next = NULL; q->next = p; q = p; } ``` 5. 遍历链表,从`head->next`开始,因为头节点只是为了方便操作而添加的,实际的数据从第二个节点开始。在遍历过程中,输出每个节点的`data`,如果当前节点不是链表的最后一个节点,则在输出后添加一个空格,否则添加换行符。 ```c q = head->next; while (q != NULL) { printf("%d", q->data); if (q->next != NULL) printf(""); else printf("\n"); q = q->next; } ``` 6. 最后,程序返回0,表示成功执行。 这段代码遵循了题目要求,通过动态内存分配和指针操作,实现了顺序建立单链表以及链表的遍历输出。在实际运行中,输入一组整数,程序会构建对应的链表并按照输入顺序输出这些整数。