1. 尾插法
void List_TailInsert(LinkList &L,ElemType a[],int n){
LNode *s,*r; //s指向新申请的结点,r指向L的最后一个结点
int i;
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
r = L; //r一开始指向头结点
for(i=0;i<n;i++){
s = (LNode *)malloc(sizeof(LNode)); //s指向新申请的结点
s->data = a[i]; //用新申请的结点来接受数组a中元素
r->next = s;//将新结点插入到链表的最后
r = r->next;//r指向最后一个结点,插入一个结点后,r指向下一个结点
}
r->next = NULL;
//数组a中所有元素插入完成,将L的最后一个结点的指针域置为NULL,L建立完成
}
2.头插法
void List_HeadInsert(LinkList &L,ElemType a[],int n){
LNode *s;
int i;
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
for(i=0;i<n;i++){
s = (LNode *)malloc(sizeof(LNode));
s->data = a[i];
s->next = L->next;
L->next = s;
}
}
注意:以上代码的单链表定义为
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{ //定义单链表结点类型
ElemType data; //每个结点存放一个数据元素
struct LNode *next; //指针指向下一个结点
}LNode,*LinkList;