线性表的链式表示和实现

单链表的存储结构:

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;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值