课程链接
    代码定义单链表
    image.png

    1. struct LNode{ //定义单链表结构
    2. ElemType data; //每个节点存放一个数据元素
    3. struct LNode *next //指针指向下一个节点
    4. };
    5. struct LNode*p=(struct LNode*)malloc(size(struct LNode*)); //增加一个新节点,并用指针p指向这个节点
    6. //可以用typedef把这个数据类型重命名,简化一下编码
    7. //typedef <数据类型> <别名>

    以下就是简化后的编码

    1. typedef struct LNode{ //定义单链表结构
    2. ElemType data; //每个节点存放一个数据元素
    3. struct LNode *next //指针指向下一个节点
    4. }LNode,*LinkList;

    上下这两段代码是等价的

    1. struct LNode{ //定义单链表结构
    2. ElemType data; //每个节点存放一个数据元素
    3. struct LNode *next //指针指向下一个节点
    4. };
    5. typedef struct LNode LNode;
    6. typedef struct LNode *LinkList; //这是一个指向struct LNode *的指针

    现在表示一个单链表时,只需要声明一个头指针L,指向单链表的第一个节点
    可以用 LNode L声明一个指向单链表第一个节点的指针
    或者 LinkList L //这种方式代码可读性更强一点
    *举个例子:

    1. typedef struct Node
    2. {
    3. ElemType data;
    4. struct LNode *next;
    5. }LNode, *LinkList;
    6. LNode*GetElem(LinkList L,int i) //LNode强调的是返回的结点,LinkList强调这是一个单链表
    7. {
    8. int j=1;
    9. LNode *p=L->next;
    10. if(i==0)
    11. return L;
    12. if(i<1)
    13. return NULL;
    14. while(p!=NULL && j<1)
    15. {
    16. p=p->next;
    17. j++;
    18. }
    19. return p;
    20. }