将节点插入到建立起来的有序链表中
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; }
相关文章推荐
- 第十八周项目一(6):将值为x的结点插入到建立起来的有序链表中
- 环形有序链表插入节点
- java建立双向链表,插入结点,删除节点
- 有序插入建立链表 C语言实现
- 从键盘读入n个整数(升序),请编写算法实现: 建立带表头结点的单链表; 显示单链表,(形如:H->10->20->30->40); 在有序单链表中插入新的数据元素x; 将单链表就地逆
- 链表:检测是否有环,是否相交,删除节点,插入节点,打印节点,建立节点,节点排序,节点逆序,
- 向有序循环单向链表中插入节点
- 数据结构---单链表(建立,节点删除,节点插入)
- 数据结构---单链表(建立,节点删除,节点插入)
- 双向链表的初始化,建立,添加节点和删除节点(注意插入和删除要分三种情况)
- 【C语言】 链表 单链的建立,节点增加 删除 顺序插入
- 向循环有序链表内插入一个节点
- 【C与指针】有序单链表插入节点
- 单向链表之有序插入节点(C语言实现)
- C语言——链表部分(包括节点的建立、总长度、显示链表、插入节点以及删除节点)
- 链表(篇1)循环有序链表中插入节点
- 双向循环链表的建立,插入,删除(带头节点)
- 数据结构——单链表的创建、逆置、插入、有序表的建立、有序单链表合并等基础操作!!
- 单链表的建立、测长、打印、删除节点、插入节点、排序、逆转
- 建立一个带附加头结点的单链表.实现测长/打印/删除结点/插入结点/逆置/查找中间节点/查找倒数第k个节点/判断是否有环