看着都简单,其实写起来不是这里出毛病,就是那里出毛病,要命的是,每次写法不同,毛病也不同……
写这个博客用来做总结复习,还有就是看看能不能帮到小白学习数据结构,每当我发现自己感觉没什么可总结的,可说的,就写写博客,这样就有话了。
链表(这里只是单链表)的基本功能包括:创建、插入、删除、清理、排序、查找等其他的功能。
这里做一个总体的实现
1.创建一个链表,并实现基本功能:创建、插入、删除、清理、查找。我会在代码里面加上注释,这样的更方便。
#include <iostream>
using namespace std;
struct node
{
int data;
node *next;
};
//创建链表
void createList(node **head, int len) //这里面不用双重指针也可以,只要你不打算改变
//头节点本身,比如没有删除我下面的头节点那部分。
{
node *p = *head;
for (int i = 0; i < len; ++i)
{
node *q = new node;
q->data = i;
p->next = q;
p = p->next; //这里这么写比较好理解 p=q感觉怪怪的
}
p->next = NULL; //最后一个尾节点的next要为NULL,要不然会出错的,无法遍历
p = (*head)->next; //下面三行用来删除头节点,并把正式的节点设为头节点
delete *head;
*head = p;
}
//插入元素
void insertElem(node **head,