单链表c++实现
说明:
1.进行初始化是直接用的尾插法来实现一张带有数据的单链表。
2.函数:
0.单链表的初始化\n
1.单链表的遍历\n
2.单链表插入\n
3.单链表删除\n
4.按位查找(查找第i个元素的算法)\n
5.按值查找(返回相应的地址)\n
6.清空单链表\n
7.判断是否为空\n
8.当前链表的表长\n
9.单链表的逆置\n
10.头插法建表\n
11.销毁单链表\n
12.退出\n
(懒得写了)
3.由于函数过多所以自己重新写了个头文件danLinkList.h然后直接调用就行。
4.单链表的逆置操作:其实就是冲重新用了一遍头插法。
5. 代码:
//danLinkList.h
#include <bits/stdc++.h>
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
//带头结点的初始化
bool Init_LinkList(LinkList &L)
{
L = (LinkList)malloc(sizeof(LNode));
if(L == NULL) return false;
L -> next = NULL;
return true;
}
//单链表插入
bool Insert_LinkList_L(LinkList &L, int i,int e)
{
LNode *p = L;
LNode *s;
int j = 0;
while(p && j < i-1)
{
p = p->next;
j++;
}
if(!p || j > i-1) return false;
s = new LNode;
// s = (LNode*)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return true;
}
//头插法建立单链表
void Hand_LinkList(LinkList &L, int n)
{
LNode *p;
L = new LNode;
L->next = NULL;
for(int i = n; i > 0; i--)
{
p = new LNode;
cin >> p ->data;
p -> next = L -> next;
L->next = p;
}
}
//单链表的逆置
void Transpose_List(LinkList &L)
{
LNode *p, *q;
p = L->next;
L->next = NULL;
while(p)
{
q = p;
p = p ->next;
q->next = L->next;
L->next = q;