数据结构

顺序表:用顺序存储方法存储的线性表

顺序表类型定义

  #define ListSize 100 //表空间的大小可根据实际需要而定,这里假设为100
  typedef int DataType; //DataType的类型可根据实际情况而定,这里假设为int
  typedef struct {
      DataType data[ListSize];//向量data用于存放表结点
      int length;//当前的表长度
     }SeqList;

线性表

 对于非空的线性表:
     ① 有且仅有一个开始结点a1,没有直接前趋,有且仅有一个直接后继a2
     ② 有且仅有一个终结结点an,没有直接后继,有且仅有一个直接前趋an-1
     ③ 其余的内部结点ai(2≤i≤n-1)都有且仅有一个直接前趋ai-1和一个ai+1

单链表

单链表中每个结点的存储地址是存放在其前趋结点next域中,而开始结点无前趋,故应设头指针head指向开始结点。

单链表类型描述
  typedef char DataType; //假设结点的数据域类型为字符
  typedef struct node{   //结点类型定义
       DataType data;    //结点的数据域
       struct node *next;//结点的指针域
     }ListNode;
  typedef ListNode *LinkList;
  ListNode *p;
  LinkList head;
  注意:
     ①LinkList和ListNode *是不同名字的同一个指针类型(命名的不同是为了概念上更明确)
     ②LinkList类型的指针变量head表示它是单链表的头指针
     ③ListNode *类型的指针变量p表示它是指向某一结点的指针

单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点即可

双向链表(Double Linked List)
     双(向)链表中有两条方向不同的链,即每个结点中除next域存放后继结点地址外,还增加一个指向其直接前趋的指针域prior。

双向链表类型描述

 typedef struct dlistnode{
         DataType data;
         struct dlistnode *prior,*next;
      }DListNode;
    typedef DListNode *DLinkList;
    DLinkList head;


存储密度Storage Density)是指结点数据本身所占的存储量和整个结点结构所占的存储量之比,即

    存储密度=(结点数据本身所占的存储量)/(结点结构所占的存储总量)


你可能感兴趣的:(数据结构,数据结构,链表,线性表)