逆序建立链表(线性表)

2020年1月17日 1772点热度 0人点赞 0条评论

逆序建立链表(线性表)

时间: 1ms        内存:128M

描述:

本题只需要提交填写部分的代码

(线性表)逆序建立一个链表,带头结点

代码:

#include <stdio.h>
#include <stdlib.h>
typedef struct number  //定义结构体,NUM为结构体变量名
{
    int date;
    struct number *link;  //指向下一个结点的指针
    struct number *before;//指向结点前驱的指针
}NUM;
void destroy( NUM *head)
{
  NUM *p;
 while(head!=NULL)
 {
  p=head->link;
  delete(head);
  head=p;
 }
}
NUM *creat(int n)
{
    NUM *p,*q,*head;
    head=p=q=(NUM*)malloc(sizeof(NUM));//分别开辟一块内存空间给head,p,q
    head->before=NULL;  //head为头,令head的前驱为NULL
    scanf("%d",&p->date);
    while(--n)  //尾插建表,同时记录每个结点的前驱
    {
        p=(NUM*)malloc(sizeof(NUM));//新建p结点,插入q节点后,不仅要让q的link指向p,还要记录q是p的前驱
        scanf("%d",&p->date);
        /***********/

         添加代码

      /*************/    }
    q->link=NULL;
    return q;
}
void play(NUM *h)
{
    NUM *p;
    for(p=h;p!=NULL;p=p->before)//从后往前倒着输出
        printf("%d ",p->date);
 destroy(p);
}
int main()
{
    int n;
    scanf("%d",&n);
    play(creat(n));
    return 0;
}

输入:

输入链表长度n:5

输入数据:1 2 3 4 5

输出:

5 4 3 2 1

示例输入:

6
10 2 9 7 8 8

示例输出:

8 8 7 9 2 10 

提示:

参考答案:

解锁文章

没有看到答案?微信扫描二维码可免费解锁文章

微信扫描二维码解锁

使用微信扫描二维码打开广告页面后可以立即关闭,再刷新此页面即可正常浏览此文章

所跳转广告均由第三方提供,并不代表本站观点!

已经扫描此二维码?点此立即跳转

code

这个人很懒,什么都没留下

文章评论