C语言链表作用域,创建一个链表,共有N(N由#define定义)个节点,第1个节点的数据域赋值为0,第2个节点的数据域赋值...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

junjie8510

2014.01.29

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:49%    等级:12

已帮助:7663人

#include

#include

#define N 20

/* User Code Begin(Limit: lines<=5, lineLen<=60, 考生可在本行后添加代码、仅5行、行长<=60字符,功能是节点类型Link定义) */

struct Link

{

int data;

struct Link *next;

};

/* User Code End(考生添加代码结束) */

void dispLink(struct Link *Head); /* 根据给定的链首Head,显示整个链表中的数据,同时检查两次使用的链表是否刚好反序 */

/* User Code Begin(Limit: lines<=2, lineLen<=60, 考生可在本行后添加代码、仅2行、行长<=60字符,功能是用户自定义函数的原型声明) */

struct Link* creatLink(); /* 创建新链表 */

struct Link* reverseLink(struct Link *Head); /* 反转链表 */

/* User Code End(考生添加代码结束) */

int main(void)

{

struct Link *Head;

Head = creatLink(); /* 创建新链表 */

printf("\nbefore:");

dispLink(Head);

Head = reverseLink(Head); /* 反转链表 */

printf("\nafter:");

dispLink(Head);

return 0;

}

void dispLink(struct Link *Head)

{

static struct Link *oLink[2][N];

static int callNumber = -1;

int i = 0;

callNumber++;

if (callNumber > 1)

{

printf("Error, call invalid!\n");

return ;

}

while (Head != NULL)

{

oLink[callNumber][i] = Head;

i++;

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

Head = Head->next;

}

printf("\n");

if (1 == callNumber)

{

for (i=0; i

{

if (oLink[0][i] != oLink[1][N-1-i])

{

printf("Error, Link not reverse!\n");

return ;

}

}

}

}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,行数不限) */

struct Link* creatLink() /* 创建新链表 */

{

struct Link *h,*p;

h=(struct Link*)malloc(sizeof(struct Link));

int i;

printf("请输入第 1 个结点的数据:");

scanf("%d",&h->data);

h->next=NULL;

for(i=2; i<=N; i++)

{

p=(struct Link*)malloc(sizeof(struct Link));

printf("请输入第 %d 个结点的数据:",i);

scanf("%d",&p->data);

p->next=h;

h=p;

}

return h;

}

struct Link* reverseLink(struct Link *Head) /* 反转链表 */

{

struct Link *p,*q,*h=Head;

p=Head->next;

h->next=NULL;

for(; p!=NULL; )

{

q=p;

p=p->next;

q->next=h;

h=q;

}

return h;

}

02分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值