单链表:每个节点存储了存储了下一个节点的地址。上一个节点存储有后一个节点的地址。
双链表:每个节点不仅存储了下一个节点的地址,还存储了上一个节点的地址。
循环单链表:链表尾节点存放了链表头节点的地址。
循环双链表:每个节点不仅存储了下一个节点的地址,还存储了上一个节点的地址,同时,链表尾节点和链表头节点也存在上述关系构成闭环。
代码如下:
#include <stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
typedef struct LNode {
int data;
struct LNode *next;
}LNode, *LinkList;
void main() {
LinkList head;
head = InitList(head);
//判断链表是否为空
Empty(head);
LinkList p;
//链表赋值
//链表插值
InsertList(head, p);
}
//初始化循环单链表
LinkList InitList(LinkList &head) {
head = (LinkList)malloc(sizeof(LNode));
if (head == NULL)
return false;
head->next = head;
}
//判断链表是否为空
bool Empty(LinkList head) {
if (head == NULL)
return true;
else
return false;
}
//链表赋值
//链表插值
bool InsertList(LinkList head,LinkList p) {
if (head == NULL || p == NULL)
return false;
p->next = head->next;
head->next = p;
return true;
}
总结如下: