📜  数据结构概述 |第 1 组(线性数据结构)(1)

📅  最后修改于: 2023-12-03 15:26:09.716000             🧑  作者: Mango

数据结构概述 | 第 1 组 (线性数据结构)

什么是数据结构?

数据结构是计算机科学中的一个基本概念,它是计算机程序中数据的组织、管理和存储的方式。它是计算机程序设计中重要的基础,不同的数据结构适用于不同的算法和程序设计问题。

什么是线性数据结构?

线性数据结构是一种特殊的数据结构,它的数据元素之间存在一对一的线性关系,即每个元素只有一个前驱和一个后继。常见的线性数据结构有以下几种:

  • 数组
  • 链表
  • 队列
数组

数组是一种简单而常用的线性数据结构,它可以用来存储一组相同类型的数据元素。数组中的元素可以通过下标访问,下标从 0 开始。

以下是一个 C++ 的数组声明及初始化的示例代码:

int a[5] = {1, 2, 3, 4, 5};
链表

链表是一种在内存中存储数据的一种方式,它是由一系列的节点组成的,每个节点包含了数据和一个指向下一个节点的指针。链表有两种常见类型:

  • 单向链表
  • 双向链表

以下是一个 Java 实现的单向链表的示例代码:

class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

class LinkedList {
    ListNode head;
    LinkedList() {
        head = null;
    }
    void addNode(int val) {
        ListNode newNode = new ListNode(val);
        newNode.next = head;
        head = newNode;
    }
}

栈是一种线性数据结构,它可以按照一定的顺序进行添加和删除操作,但是只能在栈顶进行访问。栈的特点是先进后出(LIFO),即最后被加入栈的元素最先被取出。

以下是一个 Python 实现的栈的示例代码:

class Stack:
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def is_empty(self):
        return not bool(self.items)

    def top(self):
        return self.items[-1]
队列

队列是一种可以按照一定的顺序进行添加和删除操作的线性数据结构,但是只能在队尾添加元素,在队头删除元素。队列的特点是先进先出(FIFO),即最先被加入队列的元素最先被取出。

以下是一个 C++ 实现的队列的示例代码:

#include<iostream>
using namespace std;
const int N = 100010;
int q[N], hh, tt = -1;

void push(int x) {
    q[++tt] = x;
}

void pop() {
    hh++;
}

int front() {
    return q[hh];
}

bool empty() {
    return hh <= tt;
}

int main()
{
    push(1);
    push(2);
    push(3);
    cout << front() << endl; // 1
    pop();
    cout << front() << endl; // 2
    pop();
    cout << front() << endl; // 3
    pop();
    cout << empty() << endl; // 1
    return 0;
}
总结

线性数据结构是计算机程序中最基本的数据结构之一,它们可以用来解决众多的算法和程序设计问题。学习和掌握这些数据结构是每一个程序员必不可少的基本功。