实现循环单链表的各种基本运算的方法
时间: 2024-06-12 17:11:49 浏览: 121
循环单链表是一种特殊的单链表,它的尾节点指向头节点,形成一个环。实现循环单链表的基本运算包括:初始化、插入、删除、查找、遍历等操作。下面是实现循环单链表的各种基本运算的方法:
1. 初始化循环单链表
void InitList(LinkNode *&L){
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = L;
}
2. 头插法建立循环单链表
void CreateListF(LinkNode *&L,ElemType a[],int n){
InitList(L);
LinkNode *p=L,*s;
int i=0;
while(i<n){
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=a[i];
s->next=p->next;
p->next=s;
i++;
}
}
3. 尾插法建立循环单链表
void CreateListR(LinkNode *&L,ElemType a[],int n){
InitList(L);
LinkNode *p=L,*s;
int i=0;
while(i<n){
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=a[i];
s->next=p->next;
p->next=s;
p=s;
i++;
}
}
4. 插入节点
void InsertList(LinkNode *&L,int i,ElemType e){
LinkNode *p=L,*s;
int j=0;
while(j<i-1){
p=p->next;
j++;
}
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=e;
s->next=p->next;
p->next=s;
}
5. 删除节点
void DeleteList(LinkNode *&L,int i){
LinkNode *p=L,*q;
int j=0;
while(j<i-1){
p=p->next;
j++;
}
q=p->next;
p->next=q->next;
free(q);
}
6. 查找节点
LinkNode *GetList(LinkNode *L,int i){
LinkNode *p=L->next;
int j=1;
while(p!=L && j<i){
p=p->next;
j++;
}
if(p==L || j>i){
return NULL;
}
return p;
}
7. 遍历循环单链表
void TraverseList(LinkNode *L){
LinkNode *p=L->next;
while(p!=L){
printf("%d ",p->data);
p=p->next;
}
}
阅读全文