C++使用由结构形成的链表来存放数据
5.1需求分析: 使用由结构形成的链表来存放数据;总保障,在把第i个数据插入到链表以前,链表中当前已有的i-1个数据已经是有序的(i=1,2,…,即是说,每次总是在原有有序链表的适当位置插入新数据,而保障插入后的链表仍有序。注意i=1时,链表为“空”显然满足条件)。
5.2程序执行的结果:
5.3概要设计:
本程设计思路: 本题实现泛型的单链表模板,可以方便的对各种类型数据的插入,没加入一个数据,会线性搜索数据适当的插入位置,保证链表的有序性。当然可以在此基础上将其改造位双向链表
程序流程图(如左图):
5.3 详细设计与编码:
见上传程序。
5.4 调试分析:
本题设计node结构来包装数据,主要注意的是在正确的地点插入连表姐点的方法,要保证链表的连续性,避免指针的非法指向。
5.5 用户使用说明:
用户依次输入数据(非排序)并以0结尾,程序将输入数据进行排序并输出。
5.6 设计心得:
本题加强了我对链表数据结构的理解,也加强了我对模板的理解
#include<iostream>
#include<iomanip>
using namespace std;
int lineNum[8];
bool colHold[8] ={false};
bool diagonalHold[15] ={false};
bool invDiagonalHold[15] ={false};
void solve(int m) //递归求解
{
if(m==8)
{ static int m=0;
m++;
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com return;
}
for(int i=0;i<8;i++)
{
if(!colHold[i] && !diagonalHold[m+i] && !invDiagonalHold[7+m-i])
{
lineNum[m]=i;
colHold[i]=true;
diagonalHold[m+i]=true;
invDiagonalHold[7+m-i]=true;
solve(m+1);
colHold[i]=false; //清除上次记录
diagonalHold[m+i]=false;
invDiagonalHold[7+m-i]=false;
}
}
}
void main()
{ solve(0);}1812