您的位置:首页 > 其它

将节点插入到建立起来的有序链表中

2014-03-25 16:57 309 查看
/*
* 程序的版权和版本声明部分
* Copyright (c)2014, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: fibnacci.cpp
* 作    者:高古尊
* 完成日期:2014年3月25日
* 版本号: v1.0
*
* 输入描述:
* 问题描述:编写函数void insert(int x),将值为x的结点插入到由make_list3建立起来的有序链表中。
* 程序输出:
* 问题分析:
*/
#include<iostream>
using namespace std;
struct Node
{
int data;
//结点的数据
struct Node *next;
//指向下一结点
};
Node *head=NULL;
//将链表头定义为全局变量,以便于后面操作
void make_list3();
//建立链表3
void out_list3();
//输出链表3
void insert(int x);
//将值为 x 的结点插入到由 make_list3 建立起来的有序链表中
void paisu();
int main( )
{
int x;
make_list3();
out_list3();
paisu();
out_list3();
cout<<"请输入要插入的节点:";
cin>>x;
insert(x);
out_list3();
return 0;
}
void make_list3()
{
int n;
Node *p3;
cout<<"输入若干正数(以 0 或一个负数结束)建立链表:";
cin>>n;
while(n>0)
//输入若干正数建立链表,输入非正数时,建立过程结束
{
p3=new Node;
//新建结点
p3->data=n;
p3->next=head;
//新建的结点指向原先的链表头
head=p3;
//链表头赋值为新建的节点,这样,新结点总是链表头
cin>>n;
//输入下一个数,准备建立下一个结点
}
}
void out_list3()
{
Node *p3=head;
cout<<"链表中的数据为:";
while(p3!=NULL)
{
cout<<p3->data<<" ";
p3=p3->next;
}
cout<<endl;
return;
}
void paisu()
{
int f;
Node *p3,*b,*c=NULL,*d;
do
{
p3=head;
do
{
d=b=p3->next;
if(p3->data>b->data)
{
f=p3->data;
p3->data=b->data;
b->data=f;
}
p3=p3->next;
}
while(b->next!=c);
c=d;
if(c==head->next)
break;
}
while(p3!=NULL);
return;
}
void insert(int x)
{
Node *p3=head,*b;
Node *a=new Node;
a->data=x;
if(head==NULL)   //是空链表,p作为第一个结点即可
head=a;
else             //插入p结点后,各结点应该保持有序
{
b=p3;
while(p3!=NULL)
{
if(x<head->data)
{
a->next=head;
head=a;
break;
}
else
{
b=p3;
p3=p3->next;
if(x<p3->data)
{
b->next=a;
a->next=p3;
break;
}
}

}

}
cout<<endl;
return;
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表 struct
相关文章推荐