数据结构基础
数据结构基础数据结构研究的三个方向:数据的逻辑结构线性结构非线性结构基本的数据结构线性链表:栈和队列树与二叉树排序计数
数据结构是指相互有关联的数据元素的集合。
数据结构研究的三个方向:
-
数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;
-
在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;
-
对各种数据结构进行的运算。
数据的逻辑结构
线性结构
有且只有一个开始结点和一个终端结点,且所有结点都最多只有一个直接前驱和一个直接后继。栈、队列、串、数组等都是线性结构。
非线性结构
在该类结构中至少存在一个数据元素,它具有两个或者两个以上 的前驱或后继。树、二叉树、多维数组、广义表、图、堆等。
基本的数据结构
集合结构:数据元素的有限集合。数据元素之间除了‘属于同一个集合’的关系之外没有其他关系。
线性结构:数据元素的有序集合。数据元素之间形成一对一的关系
树形结构:树是层次数据结构,树中数据元素之间存在一对多的关系。
图状结构:图中数据元素之间的关系是多对多的。
线性链表:
数据结构中每一个结点对应于一个存储单元,这种存储单元成为存储结点,简称结点。
结点由两部分组成:用于存储数据元素值,称为数据域;用于存放指针,称为指针域,用于指向前一个或后一个结点。
线性链表的基本运算:查找、插入、删除。
#! /usr/bin/env python # -*- coding:utf8 -*- class Node: # '创建节点' def __init__(self, data): self.data = data self.next = None class LinkList: # '创建列表' def __init__(self, node): # '初始化列表' self.head = node self.head.next = None self.tail = self.head def add_node(self, node): # '添加节点' self.tail.next = node self.tail = self.tail.next def view(self): # '查看列表' node = self.head link_str = '' while node is not None: if node.next is not None: link_str += str(node.data) + '-->' else: link_str += str(node.data) node = node.next print('The Linklist is:' + link_str) def length(self): # '列表长度' node = self.head count = 1 while node.next is not None: count += 1 node = node.next print('The length of linklist are %d' % count) return count def d