您的位置:首页 > 其它

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

2016-04-16 19:26 363 查看
单链表分为:动态链表、静态链表两种。

单链表的定义

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

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

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

单链表的节点结构



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

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

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

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

class ListNode{

int  data;

ListNode *next;

};

ListNode *p;

 

p → data      

p → next   

单链表的指针实现

不带头结点的单链表结构

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

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

带头结点的单链表结构

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

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

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

单链表的插入操作



q → next = p → next;  

 p → next = q;

单链表的删除操作

q
= p → next;

p →
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指向下一个结点

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: