当前位置:首页信息竞赛 > 正文

通俗易懂的讲解C++中的单链表及定义、结构、建立和输出

作者:野牛程序员:2023-02-22 14:26:28信息竞赛阅读 2479

C++中的单链表是一种数据结构,用于存储一系列具有相同数据类型的元素。单链表中的元素通过指针连接在一起,每个元素包含一个数据项和一个指向下一个元素的指针。单链表可以动态地增加或删除元素,因此非常适用于需要频繁修改数据的场景。

下面是单链表的定义、结构、建立和输出的代码演示,带有详细注释。

#include <iostream>
using namespace std;

// 定义单链表节点
struct ListNode {
    int val;            // 数据项
    ListNode *next;     // 指向下一个节点的指针
    ListNode(int x) : val(x), next(NULL) {}   // 构造函数
};

// 建立单链表
ListNode* createList() {
    int n;              // 元素个数
    cout << "请输入单链表的元素个数: ";
    cin >> n;
    if (n == 0) {       // 特殊情况:空链表
        return NULL;
    }
    ListNode *head = NULL, *tail = NULL;    // 头指针和尾指针
    for (int i = 0; i < n; i++) {
        int x;          // 当前元素的值
        cout << "请输入第 " << i + 1 << " 个元素的值: ";
        cin >> x;
        ListNode *node = new ListNode(x);   // 创建新节点
        if (head == NULL) {     // 第一个节点
            head = node;        // 头指针指向第一个节点
            tail = node;        // 尾指针指向第一个节点
        } else {                // 其他节点
            tail->next = node;  // 尾节点的指针指向新节点
            tail = node;        // 尾指针指向新节点
        }
    }
    return head;                // 返回头指针
}

// 输出单链表
void printList(ListNode *head) {
    ListNode *cur = head;       // 指针cur指向头指针
    while (cur != NULL) {       // 遍历整个链表
        cout << cur->val << " ";    // 输出当前节点的数据项
        cur = cur->next;        // 指针cur指向下一个节点
    }
    cout << endl;               // 输出完毕后换行
}

// 测试
int main() {
    ListNode *head = createList();      // 建立单链表并返回头指针
    cout << "单链表为: ";
    printList(head);            // 输出单链表
    return 0;                   // 程序结束
}

总体来说,该程序的功能是:建立一个单链表,然后输出这个单链表的元素值。具体实现步骤如下:

  1. 定义了一个单链表节点结构体,包含一个数据项val和一个指向下一个节点的指针next。

  2. 实现了一个建立单链表的函数createList,该函数首先从标准输入读入元素个数n,然后用循环读入n个元素值,并将每个元素值存储到新建的单链表节点中。在节点建立时,函数使用new运算符动态分配内存,以避免内存泄漏。建立节点后,函数将节点按顺序链接在一起,构成一个单链表,并返回单链表的头指针。

  3. 实现了一个输出单链表的函数printList,该函数接受单链表的头指针作为参数,用一个指针cur遍历整个链表,输出每个节点的数据项val,并将指针cur指向下一个节点。输出完毕后,函数换行。

  4. 在主函数中,先调用createList函数建立单链表,并将返回的头指针存储在变量head中。然后输出一行提示信息,再调用printList函数输出单链表的元素值。最后返回0,表示程序正常结束。

  5. 值得注意的是,该程序中对输入的元素个数n没有做任何的错误处理,如果用户输入的n小于0或大于某个限制值,程序可能会崩溃或出现不可预知的错误。此外,该程序没有实现单链表的删除、插入等操作,只是简单地建立并输出单链表的元素值。如果需要更多的单链表操作,需要对程序进行扩展和改进。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 企业网站建设
  • 最新推荐

    热门点击