目录
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。
单链表也是线性表的一种。
先上定义
链表的初始化
输出所有链表节点
出栈
查找
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。
画个图大家大家理解一下:
自己画的,有点丑。
那么咱可以知道一个节点包括两个域:其中储存数据元素信息的域称为“数据域”,也就是图中的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; }
本人小白一个,内容有瑕疵,欢迎大神投稿