Advertisement

在数据结构与算法领域中进行递增链表的插入操作

阅读量:

题目描述
给定一个按升序排列的整数序列以及一个特定的整数M,要求构建该序列对应的链表结构,并生成一个值为M的新节点插入至链表中,确保最终的序列依然维持升序排列的状态。

输入
每个测试用例包含一组输入数据,第一行给出原序列的长度N(为任意long int范围内的正整数)以及需要插入的整数M;第二行则提供N个按照升序排列的整数,表示原始递增数列。

输出
根据提供的递增序列构造出对应的链表结构,随后将M插入到链表中,并输出插入后的链表所对应的数字序列。所有数字之间以一个空格分隔,但末尾不得出现空格。

样例输入
6 2
-10 -3 1 5 9 30

样例输出
-10 -3 1 2 5 9 30

本题特别需要注意避免采用两个指针同时指向同一动态内存区域的操作方式,如下:

复制代码
    void InsNode(LinkList PHead,DataType data)
    {
    	Node *p;
    	Node *s;
    	Node *q;
    	p=PHead;
    	q=PHead;    //此处p和q同时指向链表头结点,从思维上来说感觉没问题 
    	p=p->Next;  //这样很容易产生误导,实际上这样做会出现一个严重问题
    	while(p->Next!=NULL&&p->Data<data) 

全部评论 (0)

还没有任何评论哟~