什么是有环的链表?有什么特点?怎麽用C语言创建?

我指怎么写一个程序,它能创建一个有环链表?... 我指怎么写一个程序,它能创建一个有环链表? 展开
 我来答
tattackor
推荐于2017-10-09 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:873万
展开全部

1、有环的链表指的是链表有环路,例如下面:
A->B->C->D->B,这样遍历的时候B->C->D->B就形成一个环路一直循环。
有环链表跟普通链表一样,只不过构造数据的时候会形成环路。

2、例程:

/*
结点1数据 : Visual C++ Windows
结点2数据 : Visual C++ 6.0
结点3数据 : Visual C++ 2010
结点4数据 : C++ Primer Plus
结点5数据 : Windows 7
成功找到结点。
请按任意键继续. . .
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct mode {
    char s[40];
//    int tr;
    struct mode *next;
}*LinkList,*Node;
LinkList CreateList(int n) {
    LinkList head;
    Node p,q;
    head = p = (mode *)malloc(sizeof(struct mode));
    for(int i = 0;i < n;i++) {
        q = (mode *)malloc(sizeof(struct mode));
        printf("结点%d数据 : ",i + 1);
        gets_s(q->s);
        p->next = q;
        p = q;
    }
    p->next = head;
    return head;
}
bool FindNode(LinkList head, char *s) {
    Node p = head->next;
    while(p != head) {
        if(strcmp(s,p->s) == 0) return true;
        p = p->next;
    }
    return false;
}
int main() {
    LinkList head = CreateList(5);
    if(FindNode(head,"Windows 7")) printf("成功找到结点。\n");
    else printf("没有找到指定数据的结点。\n");
    return 0;
}
爱浪菜K
2011-06-07 · TA获得超过558个赞
知道答主
回答量:56
采纳率:0%
帮助的人:0
展开全部
有环的链表指的是链表有环路,例如下面:
A->B->C->D->B,这样遍历的时候B->C->D->B就形成一个环路一直循环。
有环链表跟普通链表一样,只不过构造数据的时候会形成环路,如之前举的例子。
追问
那他和循环链表有什莫区别??
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Kevin_best
2011-06-16
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
定义长度Max,当到达长度Max后,让它从头开始循环.这时候用qp->top=(qp->top+1)%qp->Max,模除形式比如12345后top=5; top+1=6; qp->top+1%qp->Max=6%5=1; 然后从1开始循环.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-06-08 · TA获得超过236个赞
知道答主
回答量:119
采纳率:0%
帮助的人:55.8万
展开全部
没有区别,环链表就是循环链表。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式