24小时热门版块排行榜    

CyRhmU.jpeg
查看: 731  |  回复: 4

FWei灵

铜虫 (小有名气)

[交流] 求代码解释已有4人参与

各位大虾、、、、

帮帮我解释一下这代码、、小弟是刚学的、、、
、、、、、、谢谢、、、
#include
#include

typedef  int ElemType;
typedef struct LinkNode
{  ElemType data;
   struct LinkNode *next;
}LinkNode,LinkList;

int n; /*n作为整个程序的全局变量*/
LinkList *create(void)
{        LinkNode *head,*p1, *p2;
        n=0;
        p1=p2=(struct LinkNode *)malloc(sizeof(LinkNode));
        scanf("%d",&p1->data);
        head=NULL;
        while(p1->data!=0)
        {        n=n+1;
                if(n==1)
                        head=p1;
                else
                        p2->next=p1;
                p2=p1;
                p1=(struct LinkNode *)malloc(sizeof(LinkNode));
                scanf("%d",&p1->data);
        }
        p2->next=NULL;
        return(head);
}

int insertLink(LinkList *head, int i,ElemType e)
{        LinkNode *p,  *s;  
        int j;
        p=head; j=0;
        while(p && j         {        p=p->next;
                j++;
        }
        if(!p||j>i-1)
        {        printf("无法插入" );
                return 0;
        }
        s=(struct LinkNode *)malloc(sizeof(LinkNode));
        s->data=e;
        s->next=p->next;
        p->next=s;
        return 1;
}

int deleteLink(LinkList *head,int i)
{
        LinkNode *p, *q;
        int j;
        p=head;
        j=0;
        while(p->next && j         {        p=p->next;
                j++;
        }
        if(!(p->next)||j>i-1)
        {        printf("无法删除" );
                return 0;
        }
        q=p->next;
        p->next=q->next;
       
        free(q);
        return 1;
}

void printLink(LinkList *link)
{
        LinkNode *p;
        p=link;
        printf("链表数据结果:\n" );
        while (p)
        {
                printf("%d-> ",p->data);
                p=p->next;
        }
        printf("\n" );
}

void main()
{
        LinkList *link;
        link=create();
        printLink(link);
        insertLink(link,2,99);
        printLink(link);
        deleteLink(link,3);
        printLink(link);
}

[ Last edited by jjdg on 2012-3-9 at 03:02 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smart0193

木虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与 2012-03-09 03:01:19
这个程序是一个链表操作的。包括链表的创建、删除等操作。找本数据结构书,都会讲到。这么长的程序,你想咋解释?呵呵。
一个奋斗在三流高校的教育界民工
2楼2012-03-08 19:04:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+1): 欢迎常来程序语言看看 2012-03-08 19:57:36
楼主这个是链表中最简单的单向链表,它包含两个域,一个信息域和一个指针域。这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值。

一个单向链表的节点被分成两个部分。第一个部分保存或者显示关于节点的信息,第二个部分存储下一个节点的地址。单向链表只可向一个方向遍历。链表最基本的结构是在每个节点保存数据和到下一个节点的地址,在最后一个节点保存一个特殊的结束标记。

最基本的操作:建立create, 插入insertLink, 删除deleteLink, 当然还有查找遍历。
很女子很弓虽大
3楼2012-03-08 19:05:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lt292

金虫 (正式写手)

Holy Shit

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
jjdg(金币+1): 感谢参与 2012-03-09 03:01:27
好几年不看c语言,我表示,我已经看不懂了
记忆中的颜色,慢慢褪去,变成一缕缕的黑丝,最终消失在茫茫的空白里,一去不返```
4楼2012-03-08 20:36:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ltcc2000

木虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖
其中有很多宏语句,看不懂
海阔凭鱼妖
5楼2012-03-09 09:37:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 FWei灵 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见