版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35119182/article/details/88342603
#include <iostream>
#include <string>
using namespace std;
// 链表的结构
typedef struct LNode{
int data; // 数据域
struct LNode * next; // next指针
}LNode,*LinkNode;
//构造一个空的单链表L
bool LinkNode_L(LinkNode &L) {
L = new LNode; // 创建头结点
if (!L) {
return false;
}
L->next = NULL;
L->data = 0;
return false;
}
//前插法创建单链表
void CreateList_H(LinkNode &L) {
//输入n个元素的值,建立到头结点的单链表L
int n;
LinkNode s; //定义一个指针变量
L = new LNode;
L->next = NULL; //先建立一个带头结点的空链表
cout << "请输入元素个数n:" << endl;
cin >> n;
cout << "请依次输入n个元素:" << endl;
cout << "前插法创建单链表..." << endl;
while (n>0) {
s = new LNode;
cin >> s->data;
s->next = L->next;
n--;
}
}
//尾插法创建单链表
void createtail_list(LinkNode & L) {
//输入n个元素的值,建立到头结点的单链表L
int n;
LinkNode s,r; //定义一个指针变量s 和一个尾指针
L = new LNode;
L->next = NULL; //先建立一个带头结点的空链表
r = L; // 尾指针首先指向头指针
cout << "请输入元素个数n:" << endl;
cin >> n;
cout << "请依次输入n个元素:" << endl;
cout << "前插法创建单链表..." << endl;
while (n--) {
s = new LNode;
cin >> s->data;
if (L->next) {
s->next = L->next;
}
s->next = NULL;
r->next = s;
r = s; // 这一步相当于 r指针变量指向一个地址
}
}
//单链表的取值
//按值查找
//单链表的插入
bool ListInsert_L(LinkNode & L,int i,int e=0) {
int j;
LinkNode p, s;
p = L;
j = 0;
// 查找 i 个节点位置
while (p&&j<i-1) {
p = p->next;
j++;
}
s = new LNode;
s->next = p->next;
p->next = s;
return true;
}
//单链表的删除
bool ListDelete_L(LinkNode &L,int i) {
int j;
LinkNode p, s;
p = L;
j = 0;
while (j<i-1) {
p = p->next;
j++;
}
s = p->next;
p->next = s->next;
delete s;
return true;
}
//单链表的输出
void ListPrint(LinkNode L) {
LinkNode p;
p = L->next;
while (p) {
cout << p->data << endl;
p = p->next;
}
}
int main() {
system("pause");
return 0;
}