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

来源:互联网 发布:北京供销大数据怎么样 编辑:程序博客网 时间:2024/05/05 00:53

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


单链表的定义

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

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

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


单链表的节点结构


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


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

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

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

}

}









0 0
原创粉丝点击