第十八周项目1-5:升序建立链表
来源:互联网 发布:网络做兼职是真的吗 编辑:程序博客网 时间:2024/06/18 07:13
问题及代码:
/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:test.cpp*作者:陈文青*完成日期:2015年1月28日*版 本 号:v1.0**问题描述:编写make_list3()函数建立链表,使建立链表时,使结点中的数据呈现升序。*程序输入:*程序输出:*/#include <iostream>using namespace std;struct Node{ int data; //结点的数据 struct Node *next; //指向下一结点};Node *head=NULL; //将链表头定义为全局变量,以便于后面操作void out_list(); //输出链表void make_list3(); //链表升序建立int main( ){ make_list3(); cout<<"升序排序后,"; out_list(); return 0;}void out_list(){ Node *p=head; cout<<"链表中的数据为:"<<endl; while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl; return;}void make_list3(){ int n; Node *p,*q,*t; cout<<"输入若干正数(以0或一个负数结束)建立链表:"<<endl; cin>>n; while(n>0) //输入若干正数建立链表,输入非正数时,建立过程结束 { p=new Node; //新建结点 p->data=n; p->next=NULL; //新建的结点指向原先的链表头 if(head==NULL) head=p; //链表头赋值为新建的节点 else { if (n<=head->data) //如果输入的n比链表头小,将n设置为首结点 { p->next=head; head=p; } else { q=head; t=q->next; while (t!=NULL&&n>t->data)//如果n比上一个结点大,挨个向下找 { q=t; t=q->next; } if (t==NULL) //如果是最后一个结点,插入 { q->next=p; } else //不停向下找到合适的位置后,插入结点 { p->next=t; q->next=p; } } } cin>>n; } return;}
运行结果:
知识点总结:
升序建立链表
学习心得:
在建立链表时,一定要用纸笔画出链表的建立过程,这样利于掌握链表,并且建立出所需链表
0 0
- 第十八周项目1-5:升序建立链表
- 建立升序链表
- 第十八周项目一(5):使结点中的数据呈现升序
- 第十八周项目1-1:动态链表体验
- 第十八周项目1-2:动态链表查找
- 第十八周项目一(0):动态链表体验
- 第十八周项目1-4:删除结点
- 第十八周项目1小学生考试系统
- 第十八周项目一(3):删除链表中的第一个结点
- 第十八周项目二-1指针做形参比较大小
- 第十八周项目六(1) 成绩统计
- 第十八周项目1-3:删除首结点
- 第十八周项目1-6:合适位置插入结点
- 第十八周项目一(6):将值为x的结点插入到建立起来的有序链表中
- 链表升序
- 第十八周项目一(1):后输入的数据,将新输入的数字对应的结点放在链表末尾
- 第十八周项目二—灭灯
- 第十八周J项目四找出素数
- java stack vs heap
- Eclipse常用插件推荐
- 1090.Highest Price in Supply Chain
- 线程锁 ---- NSLock , @synchronized 和 dispatch_semaphore_t
- Xmpp问题总结:处理Openfire 中文乱码问题(2)
- 第十八周项目1-5:升序建立链表
- HDU3031及左偏树模板
- ITOO-EasyUI动态菜单加载
- 蓝桥杯 数字字符串互转
- unity加载与链表
- PHP学习笔记之用php绘制表格示例
- Debian firefox 手动更新
- appium sourcecode
- 安卓http操作方式