链表插入(线性表)

这篇博客探讨了如何在链表中进行插入操作,特别是在线性表的上下文中。通过一个具体的例子,说明了如何接收输入数据,比如长度为7的序列,并如何将这些数据正确地插入到链表中,从而得到有序的链表:1 2 3 4 6 8 9。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem C: 链表插入(线性表)

Description

(线性表)已知一单向链表,从第二个结点至表尾递增有序,(设a1<x<an)如下图(“第二个结点至表尾”指a1..an )。试编写程序,将第一个结点删除并插入表中适当位置,使整个链表递增有序。

Input

输入长度n:7

输入数据:4 1 2 3 6 8 9

Output

1 2 3 4 6 8 9

Sample Input

5
11 7 8 9 10

Sample Output

7 8 9 10 11 

HINT

#include <iostream> 
#define NULL 0 
using namespace std;  
struct student 
{ 
    int num; 
    student *next; 
}; 
int n; 


student *creat(int m) 
{ 
    student *head,*p1,*p2; 
    p1=p2=new student; 
    cin>>p1->num; 
    head=NULL; 
    n=0; 
    while(p1->num!=NULL) 
    { 
        n=n+1; 
        if(n==1)head=p1; 
        else p2->next=p1; 
        p2=p1; 
        p1=new student; 
        if(n==m) 
        {break;} 
        else
            cin>>p1->num; 
    } 
    p2->next=NULL; 
    return(head); 
} 
void print(student *head) 
{ 
    student *p; 
    p=head; 
    if(head!=NULL) 
        do
        { 
			
            cout<<p->num<<" "; 
            p=p->next; 
        }while(p!=NULL); 
		
} 
student *intset(student *head)   
{   
    student *p0,*p1,*p2;  
	p0=new student;   
    p0=head;  //用p0来记录第一个数值,比较大小再插入 
    p1=head->next;
	if(p0->next==NULL)
	{
		head=head;
	}
	else
	{
		if(p0->num<=p1->num)  
			head=head;  
		else
		{  
			head=head->next;  
			while(p1->num<p0->num&&p1->next!=NULL)  
			{ p2=p1;   
			p1=p1->next;}  
			if(p1->num>p0->num)  
			{p2->next=p0;   
			p0->next=p1; }  
			else
			{p1->next=p0;   
			p0->next=NULL;      
			}  
		}
	}
    return head;  
} 


int main() 
{ 
    int m,num; 
    cin>>m; 
    student *head,*stud; 
    student *creat(int); 
    void print(student *); 
    student *intset(student *); 
    head=creat(m); 
    head=intset(head); 
    print(head); 
    return 0; 
} 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值