线性表的链式表示和实现

来源:互联网 发布:中华书局知乎 编辑:程序博客网 时间:2024/05/18 16:14

单链表的存储结构:

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;}
原创粉丝点击