作业C4--在有序链表中插入结点(信奥基本功:小学3年级)

2022-07-09 已有0人阅读 作者: IT航班

中小学编程红宝书.zip

关键词:

北京中关村;海淀黄庄;北京大学;清华大学。少儿编程;中小学编程;信息学竞赛;计算机竞赛;NOIP;NOIP竞赛;CSP-J/S竞赛;NOI竞赛。信息学奥林匹克;东坝;北京中学。面向6-18岁中小学生,做最专业的中小学编程教育。信息学研讨会;家长;学生;关心问题;少儿编程问题解答。

                                               Honeyview_640 (5).jpg

 

#include <iostream>

using namespace std; 

//在有序的链表中插入数据。 

/*

按照顺序插入,在最前,最后,和中间。

*/

struct Node

{

int num;

Node *next;

};

 

//创建链表 

Node *Create()

{

Node *head,*p1,*p2;

head = p2 = p1 = new Node();

 

  cin>>p1->num;

  if(p1->num == 0)//如果第一个结点为0 ,等于链表不创建 

  {

   delete head;

   return NULL;

  }

 

  while(true)//死循环 

  {

   p1 = new Node();

   cin>>p1->num;

  

   if(p1->num == 0)//为0时结束 

   {

    delete p1;

    break;

   }

  

   p2->next = p1;//p2专业连接起来 

   p2 = p1;

  }

 

  p2->next = NULL;//最后结点的next域为空  

  return head;

}

 

void Disp(Node *head)

{

Node *temp = head;

while(temp!=NULL)//一直循环到最后打印 

{

cout<<temp->num<<"\t";

temp = temp->next;

}

  cout<<endl;

}

 

//注意输入的内容是有顺序的,然后插入的数据按照顺序插入

/*

     三种插入形式:第一插入的数据最小,放在头

               第二插入的数据最大,放在结尾。

   第三插入的数据不是最小和最大,放在中间。

*/

Node * Insert(Node *head)

{

cout<<"请输入要插入的数"<<endl;

int id;

cin>>id;

//第一种形式:最小

//新插入的是一个结点,所以创建新的结点

Node *inNode = new Node;

inNode->num = id;

//第二种形式:最大

//如果插入的数据小于第一个,则把插入的数据放在第一个结点。插入的数据就是头结点。

if(head->num >= id) 

{

inNode->next = head;

return inNode;

}

//temp2保存头

Node *temp2 = head;

//循环到结尾

while(temp2->next!=NULL)

{

temp2 = temp2->next;

}

//如果是最大

if(temp2->num<=id)

{

temp2->next = inNode;//新结点为最后一个,链接到当前结点的后面。

inNode->next = NULL;//新结点的next域为空

return head;

}

//第三种形式:为中间的数字

//保存头

Node *temp3 = head;

//循环遍历每一个的值

while(temp3->next->next!=NULL)

{

//找到插入的位置,进行比较,看那个比插入的数据小。

if(temp3->next->num>=id)

{

inNode->next = temp3->next;//链接后面

temp3->next = inNode;//链接前面

break;

}

temp3 = temp3->next;//开始下一个,没有它,是死循环。

}

return head;

}

 

int main()

{

 Node *head = Create();//创建链表 

 Disp(head);           //打印链表

 

 head = Insert(head);//插入结点

 Disp(head);         //插入后打印

 return 0;

 

 

联系方式:

A、官方网址:

http://www.itflight.net


B、微信公众号:

添加微信,获取资料。

image.png

 



关注公众号,获取动态。

image.png