写了一个魔术师发牌问题的C语言代码。大家帮我看一下这个问题

#include<stdio.h>#include<stdlib.h>#defineCardNumber13typedefstructnode{intdata;struc... #include <stdio.h>
#include <stdlib.h>
#define CardNumber 13
typedef struct node {
int data;
struct node *next;
}lnode, *linklist;

linklist createLinkList()
{
linklist head = NULL;
linklist s, r;
int i;
r = head;
for ( i = 1; i <= CardNumber; i++ )
{
s = (linklist) malloc( sizeof(lnode) );
s->data = 0; /* 将所有节点初始化为0 */
if ( head == NULL )
head = s;
else
r->next = s;
r = s;
}
r->next = head;
return(head);
}

int main(){
linklist head=NULL, p;
head = createLinkList();
p = head;
p->data = 1;
int i;
for(i=0; i<CardNumber; i++){
p = p->next;
p->data=i+1;
}
printf("%d",head->data);
return 0;
}
---------------------------------------------------------
请问 在int main里面我将p指向head, 但是为什么最后输出head的时候是13而不是1呢
展开
 我来答
听不清啊
高粉答主

2016-08-09 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include <stdio.h>

#include <stdlib.h>

#define CardNumber 13

typedef struct node {

int data;

struct node *next;

}lnode, *linklist;


linklist createLinkList()

{

linklist head = NULL;

linklist s, r;

int i;

r = head;

for ( i = 1; i <= CardNumber; i++ )

{

s = (linklist) malloc( sizeof(lnode) );

s->data = i; /* 将所有节点初始化为相应数字 */

if ( head == NULL )

head = s;

else

r->next = s;

r = s;

}

r->next = head;

return(head);

}


int main(){

linklist head=NULL, p;

    head = createLinkList();

p = head;

int i;

for(i=0; i<CardNumber; i++){ //输出链表所有结点值 

printf("%d ",p->data);

p = p->next;

}

return 0;

}

追问
你运行一下我的代码 我想问的是 为什么我输出的head->data是13而不是1呢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式