数据结构链表小结(一)

原创 2017年01月02日 22:35:35
0)头指针是指链表指向第一个节点的指针,若链表有头结点,则是指向头结点的指针


1)头指针具有标志作用,所以常用头指针冠以链表的名字


2)无论链表是否为空,头指针均不为空


3)头指针是链表的必要元素


4)链表结构体
typedef struct Node
{
ElemType data; //数据域
struct Node *Next; // 指针域
}Node;


typedef struct Node *LinkList;


5) 链表查找第 i 个元素
GetElem(Node *L,int i,ElemType *e)
{
Node *p;
p=L->next;
int j=1;
while(p!=null && j<i){//退出的原因无非两个 一是末尾空指针,二是i = 1 第一个节点,或者 i<=0 不纯在


p=p->next
j++;
}
if(*p != null && j==i )//不等于空且i ==j 找到
*e = p -> data;
return OK;
else
return ERROR;

}




盲点:

typedef struct Lnode { 
elemtype data; 
struct Lnode * next; 
} LNode,* LinkList; 
LinkList H;

这里的LNode,* LinkList各表示什么意思啊为什么还要定义一个指针类型的 LinkList呢 有什么用啊


答:

就是LNode,* LinkList都等价struct Lnode了,你就可以LinkList H;来等义一个H了,H是一个指向结构体类型的指针。LNode struct1;struct1就是一个结构体的变量。

如果没有typedef
LNode,* LinkList就是定义了一个变量(一个节点)和一个指向该结构体类型变量的指针。LNode我一般都不用的,有指针就够了,在编程领域,指针是王道,不会灵活利用指针,编程很费劲的。
 struct{      你在这里没有定义结构体类型名        
   elemtype  data;                     
    struct Lnode  * next;      
     } LNode1;         所以只能在这里要接着定义变量:LNode1 (LNode不好)

struct Lnode {         定义了结构体类型名      
   elemtype  data;                     
    struct Lnode  * next;      
     };      可以在这里定义变量LNode1,也可以在函数别的地方定义变量LNode1

typedef struct Lnode {              
   elemtype  data;                     
    struct Lnode  * next;      
     } 只是定义了一个节点。相当于火车的一个车厢。那怎么才能成为一个链表呢?就好比你有很多节车厢,你肯定要连接起来才能成为一辆火车。在结构体是怎样连接起来的呢?
定义两个节点:LinkList p1; LinkList p2; 
代码:                 p2=p1->next;
这样就把p2连接在p1的后面了,注意:节点中的next变量是一个struct类的指针,所以组成链表基本都要用指针。 
所以还要定义一个指针类型的LinkList。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据结构(寒假小结)——2.2线性表之单链表

1、本节学习要点: 2、链表的引入: 顺序表和链表的比较: 3、单链表的基本定义: 单链表:每个结点有两部分信息:数据域,存放结点的值(内容);指针域(亦称链域),存放结点后继的地址...

数据结构小结——链表

前面几篇讲了顺序表,是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中,重点是内存地址是连续的。而链表也是顺序表的一种,只不过存储空间在内存是不连续的,最终由指针将所有的节点连接起来构成一个...

线性表之单链表学习小结(初学数据结构必看)

花了好几个小时,详细规划出了整个过程,包括所有基本操作。。。有什么疑问请下方留言 #include using namespace std; #define ElemType char #d...

数据结构入门小结之链表

最近复习数据结构,既是为了找工作,也是提升内功的一个必经之路。 1.单链表: (1) 定义: template strcut Node { T data; sturct Node*...

数据结构小结——顺序表(数组版)

何为顺序表,引用百度百科中的一段话来说 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是...

数据结构(寒假小结)——2.线性表

我回来了,期末考试还可以,没挂科,挺好的。最近打游戏老是被人坑,小学生放假了,不玩了学习。之前说寒假写的,现在来了,寒假的学习计划开始了。今天听说广州下雪了,难得啊。好冷,键盘都冻住了打字卡住了,手指...

数据结构小结——顺序表(指针版)

上一篇介绍的是基于柔性数组存储数据的顺序表,我个人感觉它和我这篇要介绍的基于给指针开辟空间存数据的顺序表差不多,都是使用堆内存,并且能够对数据存储空间调整大小。

数据结构查找之-单链表的基本操作

先给出结构体的定义:#include #include #includetypedef int DataType; typedef struct Node { struct Node* nex...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)