线性表的链式表示和实现
2017-08-14 12:21
239 查看
单链表的存储结构:
【注1】LNode只是起的一个名字,它并不是一个参数类型,这个名字只代表了一种数据结构。这个数据结构的样式就是花括号里面所括着的那两个成员:一个数据,一个指向下一个同样类型节点的指针。
而typedef struct LNode* LinkList;这一句则是定义了一个名字叫LinkList的指针,这个指针指向一个也属于LNode这种类型数据结构的一个结点。
【注2】
假设L是LinkList型变量,则L为单链表的头指针
假设p是指向线性表中第i个元素(结点a1)的指针,则p->next是指向第i+1个元素(结点ai+1)的指针
带头结点的链表建立(头插法):
带头结点的链表建立(尾插法):
typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*Linklist;
【注1】LNode只是起的一个名字,它并不是一个参数类型,这个名字只代表了一种数据结构。这个数据结构的样式就是花括号里面所括着的那两个成员:一个数据,一个指向下一个同样类型节点的指针。
而typedef struct LNode* LinkList;这一句则是定义了一个名字叫LinkList的指针,这个指针指向一个也属于LNode这种类型数据结构的一个结点。
【注2】
假设L是LinkList型变量,则L为单链表的头指针
假设p是指向线性表中第i个元素(结点a1)的指针,则p->next是指向第i+1个元素(结点ai+1)的指针
带头结点的链表建立(头插法):
LinkList CreateList_L(int n){ //创建带头结点的单链表L. int x; LinkList L; LNode *p; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; scanf("%d", &x); for(int i = 1; i <= n ; i++) { p=(LNode*)malloc(sizeof(LNode)); p->data=x; p->next=L->next; L->next=p; } return L; }
带头结点的链表建立(尾插法):
LinkList CreateList_L(int n){ //创建带头结点的单链表L. int x; LinkList L; LNode *p,*r=L;//r 为表尾指针 L=(LinkList)malloc(sizeof(LNode)); scanf("%d", &x); for(int i = 1; i <= n ; i++) { p=(LNode*)malloc(sizeof(LNode)); p->data=x; r->next=p; r=p;//r指向新的表尾结点 } r-next=NULL;//尾结点指针置空 return L; }
相关文章推荐
- 数据结构--线性表的链式表示与实现
- 线性表的表示和实现方式之链式表示和实现
- 线性表的链式表示和实现----双向循环链表
- 线性表的链式表示和实现----实用算法
- 线性表的链式表示与实现(单链表)
- 线性表的链式表示和实现(C++版)
- 线性表的链式表示和实现(数据结构)
- 线性表的链式表示和实现
- 数据结构学习----线性表的链式表示(Java实现)
- 线性表的链式表示和实现
- 【C语言版数据结构】线性表的链式表示,并且实现合并两个非递减有序排列到新的线性表
- 线性表的链式表示及实现
- 线性表的链式表示和实现
- 线性表的链式表示与实现
- 数据结构算法代码实现——线性表的链式表示与实现(单链表)(三 )
- 线性表的链式表示和实现
- 线性表的链式表示和实现
- 数据结构(4)——线性表的链式表示和实现
- JS实现线性表的链式表示方法示例【经典数据结构】
- 线性表链式存储结构的表示和实现