葫芦娃* 2022-11-01 08:56 采纳率: 80%
浏览 106
已结题

给定一个递增整数序列和某个整数M,构造出此递增序列对应的链表,并创建以M为值的新节点且插入到链表中,使其结果序列依然保持递增顺序。这些空填什么呀

#include <stdio.h>
#include <stdlib.h>

typedef struct Node NodePtr;
struct Node{ /
定义链表结点数据结构 */
int Val;
NodePtr Next;
};

int main()
{
int N, M;
int i;
NodePtr Head, Rear, Pre, Tmp;

Head = Rear = (NodePtr)malloc(sizeof(struct Node));
/* 为程序处理方便,构造表头空结点 */
Head->Next = NULL;

scanf("%d %d", &N, &M);
for(____________________ ) { /* 创建链表 */
    Pre = (NodePtr)malloc(sizeof(struct Node));    /* 申请新结点 */
    Pre->Next = NULL;
    scanf("%d", &Pre->Val);
    ____________________; /* 新结点插入链表尾部 */
    Rear = Pre;
}
/* 以下寻找M插入位置的前驱结点 */
Pre = Head; 
while( Pre->Next != NULL && ______________ )
    Pre = Pre->Next;    
/* 以下插入M */
Tmp = (NodePtr)malloc(sizeof(struct Node));     /* 创建新结点 */
Tmp->Val = M;
Tmp->Next = _____________; /* 插入新结点 */
______________ = Tmp;
if(Pre == Rear) /* 插入表尾时,需修改Rear */
    Rear = Tmp;
/* 以下输出插入后的链表结果 */
Tmp = Head->Next;
printf("%d", Tmp->Val);
for( Tmp=Tmp->Next; Tmp!= NULL; Tmp=Tmp->Next)    
    printf(" %d", Tmp->Val);
printf("\n");

return 0;

}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-11-01 10:41
    关注

    供参考:

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct Node* NodePtr;
    struct Node {
        // 定义链表结点数据结构
        int   Val;
        NodePtr Next;
    };
    
    int main()
    {
        int N, M;
        int i;
        NodePtr Head, Rear, Pre, Tmp;
    
        Head = Rear = (NodePtr)malloc(sizeof(struct Node));
        /* 为程序处理方便,构造表头空结点 */
        Head->Next = NULL;
    
        scanf("%d %d", &N, &M);
        for (i = 0; i < N; i++) { //for (____________________) { /* 创建链表 */
            Pre = (NodePtr)malloc(sizeof(struct Node));    /* 申请新结点 */
            Pre->Next = NULL;
            scanf("%d", &Pre->Val);
            Rear->Next = Pre;   //____________________; /* 新结点插入链表尾部 */
            Rear = Pre;
        }
        /* 以下寻找M插入位置的前驱结点 */
        Pre = Head;
        while (Pre->Next != NULL && Pre->Next->Val < M)//______________)
            Pre = Pre->Next;
        /* 以下插入M */
        Tmp = (NodePtr)malloc(sizeof(struct Node));     /* 创建新结点 */
        Tmp->Val = M;
        Tmp->Next = Pre->Next;//_____________; /* 插入新结点 */
        Pre->Next = Tmp;      //______________ = Tmp;
        if (Pre == Rear) /* 插入表尾时,需修改Rear */
            Rear = Tmp;
        /* 以下输出插入后的链表结果 */
        Tmp = Head->Next;
        printf("%d", Tmp->Val);
        for (Tmp = Tmp->Next; Tmp != NULL; Tmp = Tmp->Next)
            printf(" %d", Tmp->Val);
        printf("\n");
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要