码迷,mamicode.com
首页 > 其他好文 > 详细

线性表的链式表示和实现--单链表

时间:2016-04-17 23:14:20      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:

单链表分为:动态链表、静态链表两种。


单链表的定义

链式存储:用一组任意存储单元存储线性表的数据元素。

逻辑顺序与物理顺序可以相同也可以不相同

插入、删除方便,共享空间好。


单链表的节点结构

技术分享

每个结点有一个元素和下个元素的地址(只有一个连接域),称单链表。

技术分享

链表有表头、表尾,表头也就是首地址,表尾为空值。

链表是非顺序存储,顺序存取

p1.x = p→x  (p1为对象,p为首地址)


class ListNode{

int  data;

ListNode *next;

};

ListNode *p;

技术分享 

→ data      

→ next   


单链表的指针实现

不带头结点的单链表结构

技术分享

判断表尾的条件:→ next == null 

判断空表的条件:L == null

带头结点的单链表结构

技术分享

真正有效的元素是从第二个结点开始的,

判断表尾的条件:p → next == null 

判断空表的条件:L→ next == null  (一般的都使用带头结点的)


单链表的插入操作

技术分享

技术分享

→ next = p → next;  

 p → next = q;

技术分享


单链表的删除操作

技术分享

q = → next;

→ next = q → next;

技术分享

技术分享

p → next = p → next  → next//等同于上面两句


构造一个链表

创建一个data域值为d,next域值为n的结点。

创建链表是否成功,参照判断链表是否为空的条件。


遍历链表

void printList(){

Node *c = head; //新建一个指针指向表头


while(c!=NULL){//判断链表是否为空

print(c→data)//输出结点的值

c = c → nextNode();//c指向下一个结点

}

}









线性表的链式表示和实现--单链表

标签:

原文地址:http://blog.csdn.net/java_sparrow/article/details/51169271

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!