您的位置:首页 > 理论基础 > 数据结构算法

线性表的链式表示和实现

2017-08-14 12:21 239 查看
单链表的存储结构:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息