#include "text.h"
void InitCLinkList(CLinkList* CL)
{
*CL = (CLinkList)malloc(sizeof(Node));
(*CL)->next = *CL;
}
void CreateFromTail(CLinkList CL)
{
Node* p, * s;
char c;
int flag = 1;
p = CL;
while (flag)
{
c = getchar();
if (c != '$')
{
s = (Node*)malloc(sizeof(Node));
s->data = c;
p->next = s;
p = s;
}
else
{
flag = 0;
p->next = CL;
}
}
}
Node* Get(CLinkList CL, int i)
{
Node* p;
int j = 0;
p = CL->next;
while (p != CL && j < i)
{
p = p->next;
j++;
}
if (i == j)return j;
else return NULL;
}
Node* Locate(CLinkList CL, ElemType key)
{
Node* p;
p = CL->next;
while (p != CL && p->data != key)p = p->next;
if (p != CL)return p;
else return NULL;
}
int InsCList(CLinkList CL, int i, ElemType e)
{
Node* pre,* s;
int j = 0;
pre = CL->next;
while (pre != CL && j < i - 1)
{
pre = pre->next;
j++;
}
if (j != i - 1)
{
printf("插入位置错误\n");
return -1;
}
s = (Node*)malloc(sizeof(Node));
s->data = e;
s->next = pre->next;
pre->next = s;
return 0;
}
int DelCList(CLinkList CL, int i, ElemType* e)
{
Node* pre,* r;
int j = 0;
pre = CL->next;
while (pre != CL && j < i - 1)
{
pre = pre->next;
j++;
}
r = pre->next;
*e = pre->data;
pre->next = pre->next->next;
free(r);
return 0;
}
CLinkList merge_1(CLinkList A, CLinkList B)
{
Node* p, * q;
p = A;
q = B;
while (p->next != A)p = p->next;
while (q->next != B)q = q->next;
q->next = A;
p->next = B->next;
free(B);
return A;
}
CLinkList merge_2(CLinkList A, CLinkList B)
{
Node* p;
p = A->next;
A->next = B->next->next;
free(B->next);
B->next = p;
return B;
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
循环链表是一种特殊的链表,它的尾节点指向头节点,形成一个循环。循环链表可以通过一个指针来表示,并且可以在任意节点上进行插入、删除和遍历操作。 循环链表的节点结构通常包含两部分:数据域和指针域。数据域用于存储节点的数据,指针域用于指向下一个节点。 在循环链表中,通常会有一个头指针指向第一个节点。通过头指针可以遍历整个循环链表。添加一个新节点时,只需要修改相邻节点的指针,将新节点插入到链表中即可。删除一个节点时,同样需要修改相邻节点的指针,将被删除的节点排除在链表之外。 循环链表的应用场景包括:约瑟夫环问题、循环队列等。在循环链表中,尾节点的指针域指向头节点,这种特性使得循环链表可以很方便地实现环形结构。 循环链表相比于普通链表,有以下特点: 1. 循环链表没有NULL指针,可以避免了一些特殊情况的处理。 2. 循环链表可以在插入和删除节点时更方便,不需要特殊处理头节点和尾节点。 但是,循环链表也有一些缺点: 1. 遍历循环链表时,需要额外判断循环结束的条件,否则会陷入死循环。 2. 插入和删除节点时,需要保证链表的循环结构不被破坏,需要仔细处理指针的修改。
资源推荐
资源详情
资源评论
收起资源包目录
循环链表.zip (33个子文件)
循环链表
.vs
循环链表
v17
Browse.VC.db 1.72MB
Solution.VC.db 428KB
.suo 30KB
ipch
AutoPCH
a5a781e74684248e
MAIN.ipch 3.13MB
67ec8ce5a46db129
67ec91e5a46db9a8
TEXT.ipch 3.13MB
FileContentIndex
1e0ebea0-340b-45d1-80ec-d2df0027073d.vsidx 8KB
67a26d91-d435-4e94-9da1-eb731260bdda.vsidx 3KB
53c371ca-d9f3-4535-90ac-d744d7eee268.vsidx 1KB
b97425ec-acb9-4f05-ad47-39efeb8f5247.vsidx 2KB
x64
Debug
循环链表.exe 60KB
循环链表.pdb 1.04MB
循环链表
循环链表.vcxproj 7KB
循环链表.vcxproj.user 168B
x64
Debug
vc143.pdb 76KB
循环链表.tlog
CL.write.1.tlog 958B
循环链表.lastbuildstate 176B
Cl.items.tlog 294B
CL.command.1.tlog 1KB
link.command.1.tlog 1KB
link.read.1.tlog 3KB
link.write.1.tlog 502B
CL.read.1.tlog 4KB
循环链表.ilk 637KB
text.obj 18KB
循环链表.exe.recipe 316B
vc143.idb 51KB
循环链表.log 299B
main.obj 7KB
text.h 635B
main.c 106B
text.c 2KB
循环链表.vcxproj.filters 1KB
循环链表.sln 1KB
共 33 条
- 1
资源评论
鲜于言悠905
- 粉丝: 3479
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功