寸年289 2021-09-22 09:23 采纳率: 66.7%
浏览 45
已结题

求这段代码加注释 刚开始学

#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int info;
struct node* next;
}node,*link;

node* change(link head)
{
link p,q;
p = head;
head = NULL;
while(p)
{
q= p->next ;
p->next = head ;
head = p ;
p = q;
}
return head;
}
void display(link head)
{
link p;
p=head;
while(p)
{
printf("%d ",p->info);
p=p->next;
}
}
node *nizhuan(node *head)
{
node *q,*p;
p=NULL;
while(head!=NULL) //
{
q=p;
p=head;
head=head->next;
p->next=q;
}
return p;
}
main()
{
link head,r,s;
int m;
head=r=NULL;
printf("请输入数据,以0 结尾:\n");
scanf("%d",&m);
while(m!=0)
{
s= (link)malloc(sizeof(node)) ;//
s->info =m;
if(head==NULL)
head=s;
else
r->next = s ;//
r=s;
scanf("%d",&m);
}
if(r)
r->next=NULL;
printf("输入单链表数据如下:\n");
display(head);
printf("逆置单链表数据如下:\n");
head=change(head);
printf("\n");
display(head);
}

展开全部

  • 写回答

2条回答 默认 最新

  • 关注

    使用struct,通过指针连接了一个链表,然后定义了包括链表生成,赋值,反向的操作

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    有帮助望采纳~

    #include <stdio.h>
    #include <malloc.h>
    typedef struct node //链表中的每个节点
    {
        int info;          //节点内存放的值
        struct node *next; //指向下一个节点的指针
    } node, *link;
    
    node *change(link head) //用于将链表反向
    {
        link p, q;
        p = head;
        head = NULL;
        while (p)
        {
            q = p->next;    //向后查找链表节点
            p->next = head; //将后一个节点指向前一个节点
            head = p;       //head变为下一个节点
            p = q;          //向后遍历一个节点
        }
        return head; //最终最后一个节点会变为新链表的头部
    }
    void display(link head)
    {
        link p;
        p = head;
        while (p)
        {
            printf("%d ", p->info); //简单输出,遍历链表,输出每个节点中存放的值
            p = p->next;
        }
    }
    node *nizhuan(node *head)
    {
        node *q, *p;
        p = NULL;
        while (head != NULL) //没用到的函数,看函数名似乎也是对列表进行反向操作
        {
            q = p;
            p = head;
            head = head->next;
            p->next = q;
        }
        return p;
    }
    main()
    {
        link head, r, s; //创建指针
        int m;           //用于写入链表
        head = r = NULL;
        printf("请输入数据,以0 结尾:\n");
        scanf("%d", &m);
        while (m != 0)
        {
            s = (link)malloc(sizeof(node)); //申请一段内存用于存放新生成的节点
            s->info = m;
            if (head == NULL)
                head = s; //如果没头,则此劫点位链表头
            else
                r->next = s; //将此节点链入链表
            r = s;
            scanf("%d", &m);
        }
        if (r)
            r->next = NULL;
        printf("输入单链表数据如下:\n");
        display(head);
        printf("逆置单链表数据如下:\n");
        head = change(head);
        printf("\n");
        display(head);
    }
    

    1
    回复
    寸年289 回复 技术专家团-Plio大咸鱼 2021-09-22 09:37

    谢谢大佬

    回复
    技术专家团-Plio大咸鱼 回复 寸年289 2021-09-22 09:42

    有帮助望采纳~

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月14日
  • 已采纳回答 11月14日
  • 创建了问题 9月22日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部