不带头结点的循环链表建立、输出、删除
程序员文章站
2022-03-15 17:30:56
...
建立
//不带头结点的循环链表
LinkList* initCList(){
LinkList* rear;
LinkList* list;
list = (LinkList*)malloc(sizeof(LinkList));
list->next = NULL;
rear = list;
for(int i=0;i<10;i++){
LinkList *s = (LinkList*)malloc(sizeof(LinkList));
s->data = i;
rear->next = s;
rear = s;
}
rear->next = list->next;//不赋值尾NULL,将会不断输出
return list->next;
}
输出
void printCList(LinkList* L){
LinkList* p = L;
while(L->next!=p){
cout<<L->data<<" ";
L = L->next;
}
cout<<L->data;
cout<<endl;
}
删除
LinkList* deleteNode(LinkList *s){
LinkList* q = s;
while(q->next->next != s)
q = q->next;
LinkList* temp = q->next;
q->next = s;
free(temp);
return s;
}
推荐阅读
-
线性表的链式存储结构:定义、单链表存储结构、给链表头结点分配空间、初始化链表数据、输出链表、在某个位置上插入数据、头插法、尾插法、删除某个位置上的数据、删除某个数据、删除整个链表计算链表的长度
-
C语言实现双向非循环链表(带头结点尾结点)的操作方法
-
C语言实现双向非循环链表(不带头结点)的逆序打印
-
C语言实现单链表节点的删除(带头结点)
-
C语言实现双向非循环链表(不带头结点)的清空
-
有关多种(单向,双向,循环)链表的操作----初始化,插入,输出,删除,头(尾)插法
-
C语言实现双向非循环链表(带头结点尾结点)的操作方法
-
C语言实现双向非循环链表(不带头结点)的逆序打印
-
数据结构——链表——带头结点的单向循环链表
-
创建一个不带头结点的循环单向链表,从尾部插入节点