目录
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。
单链表也是线性表的一种。
画个图大家大家理解一下:
自己画的,有点丑。
那么咱可以知道一个节点包括两个域:其中储存数据元素信息的域称为“数据域”,也就是图中的date;存储直接后继存储位置的域称为“指针域”,也就是图中的next。
先上定义
#define Size 1//用于控制分配节点大小
typedef int Em;
typedef struct Linklist
{
Em date = NULL;
struct Linklist* next;//定义一个指向Linklist类的指针
}Linklist;
typedef Linklist *linklist;
链表的初始化
linklist initlink()//带表头指针
{
linklist head = (linklist)malloc(Size * sizeof(Linklist));
head->next = NULL;
return head;
}
linklist Lk_push(linklist& head, Em x)//表头插入
{
linklist p = (linklist)malloc(Size * sizeof(Linklist));//给节点分配内存
if (p != NULL)//如果节点不为空
{
p->next = head->next;
head->next = p;
p->date = x;
return head;
}
cout << "ERROR:内存分配失败" << endl;
exit(0);
}
输出所有链表节点
void Lk_outall(linklist& head)//输出所有节点
{
linklist p = head->next;
while (p!= NULL)
{
cout << p->date << " ";
p = p->next;
}
cout << endl;
}
出栈
linklist Lk_dele(linklist& head, Em x)//删除该节点
{
linklist p = head;
linklist q = head->next;
while (q != NULL)
{
if (q->date == x)
{
p->next = q->next;
free(q);//释放q点的内存
return head;
}
p = p->next;
q = q->next;
return head;
}
}
查找
linklist Lk_found(linklist& head, Em x)
{
linklist p = head->next;
while (p != NULL)
{
if (p->date == x)
{
cout << "存在" << endl;
}
return head;
}
cout << "不存在" << endl;
system("pause");
return head;
}
本人小白一个,内容有瑕疵,欢迎大神投稿