网站添加漂浮二维码怎么做/搜索词
文章目录
- 循环单链表定义
- 初始化
- 判断节点p是否是尾节点
- 判断链表是否为空
- 在节点p后插入节点s
- 循环双链表定义
- 初始化
- 判断节点p是否尾结点
- 判断链表是否为空
- 在节点p后加入节点s
- 删除节点p的后节点
循环单链表定义
其实这里定义的结构跟单链表的没什么区别,只不过在初始化或操作数据的时候,要把next指针指向链表的头指针。
#define bool int
#define true 1
#define false 0
typedef struct LNode
{struct LNode *next;int data;
}LNode,*ScLinkList;
初始化
void InitList(ScLinkList L)
{L=(LNode *)malloc(sizeof(LNode));if(L==NULL) //有可能内存分配失败return;L->next=L;
}
判断节点p是否是尾节点
bool IsTail(ScLinkList L,LNode *p)
{if(p->next==L)return true;else return false;
}
判断链表是否为空
bool IsEmpty(DcLinkList L)
{if(L->next==L)return true;else return false;
}
在节点p后插入节点s
void InsertNextNode(LNode *p,LNode *s)
{if(p==NULL||s==NULL) return ;s->next=p->next;p->next=s;
}
循环双链表定义
#define bool int
#define true 1
#define false 0typedef struct LNode
{struct LNode *next,*prior;int data;
}LNode,*DcLinkList;
初始化
void InitList(DcLinkList L)
{L=(LNode *)malloc(sizeof(LNode));if(L==NULL) //有可能内存分配失败return;L->next=L;L->prior=L;
}
判断节点p是否尾结点
bool IsTail(DcLinkList L,LNode *p)
{if(p->next==L)return true;else return false;
}
判断链表是否为空
bool IsEmpty(DcLinkList L,)
{if(L->next==L)return true;else return false;
}
在节点p后加入节点s
void InsertNextNode(LNode *p,LNode *s)
{if(p==NULL||s==NULL) return ;s->next=p->next;s->prior=p;p->next->prior=s;p->next=s;
}
删除节点p的后节点
void DelteNextNode(LNode *p)
{if(p==NULL) return ;LNode *q=p->next;p->next=q->next;q->next->prior=p;free(q);
}