1:头插法
头插法:从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头结点之后,直到读入结束标志为止。
2:代码实现
// 头插法建立链表
List HeadCreateList(){
// 初始化空表,申请一个头结点
List L = (List)malloc(sizeof(PtrToNode));
L->Next = NULL; // 头指针
for(int i = 0;i<2;i++){
List p = (List)malloc(sizeof(struct Node)); // p指向新申请的结点
cin >> p->Data;
p->Next = L->Next;
L->Next = p;
}
return L;
}
3: 代码测试
#include <iostream>
using namespace std;
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
// 头插法建立链表
List HeadCreateList(){
// 初始化空表,申请一个头结点
List L = (List)malloc(sizeof(PtrToNode));
L->Next = NULL; // 头指针
for(int i = 0;i<2;i++){
List p = (List)malloc(sizeof(struct Node)); // p指向新申请的结点
cin >> p->Data;
p->Next = L->Next;
L->Next = p;
}
return L;
}
void Print(List L){
if(L->Next){
List p = L;
while(p->Next) {
p = p->Next;
cout << p->Data << " ";
}
}
else {
cout << "NULL"; // 空链表将输出 NULL
}
cout << endl;
}
int main(){
// 头插法
cout << "头插法建立链表:"<<endl;
List L1 = HeadCreateList();
cout << "L1: ";
Print(L1);
return 0;
}