【数据结构】第二章 线性表(二)单链表

笔记【数据结构】第二章 线性表(二)

** 单链表**

通过指针把它的一串存储结点链接成一个链

存储结点由两部分组成: data字段 ,link字段

单链表的存储映像

结点之间可以连续,也可以不连续存储;

结点的逻辑顺序与物理顺序可以不一致;

表可扩充。

在C++中,可以用结构类型来描述单链表的结点 ,由于结点的元素类型不确定,所以采用C++的模板机制。

template <typename T>

struct Node 

{ 

  T data; 

  Node<T> *next;      //此处<T>也可以省略

};

头结点:如果链表有头节点,则链式结构中的第一个节点称为头结点:其数据域可以存储一些附加信息,如链表长度;其指针域指向链表中的第一个节点。

带头结点的空单链表

单链表的实现



template <class T>

class LinkList { 

  public: 

  LinkList ( ) {first=new Node<T>;
first -> next= NULL ;}

    
LinkList ( T a[ ], int n ) ; 

  ~LinkList ( ) ; 

  int Length ( ) ;

  T Get ( int i ) ; 

  int Locate ( T x ) ;

  void Insert ( int i, T x ) ;

  T Delete ( int i ) ; 

  void PrintList ( ) ; 

  private: 

     Node<T>  *first; // 单链表的头指针  , <T>可以省略

}; 




头插法:template <class T>  

LinkList<T>:: LinkList(T a[ ], int
n) {

   
first=new Node<T>;   //生成头结点

  
first->next=NULL;

  
Node<T> *s;

  
for (int i=0; i<n; i++){ 

         
s=new Node<T>; 

         
s->data=a[i];  //为每个数组元素建立一个结点

         
s->next=first->next;

         
first->next=s;

   }

}




尾插法:template <class T>  

LinkList<T>:: LinkList(T a[ ], int
n) {

   
Node<T> *r,*s;      //尾指针

   
first=n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值