苏州做网站公司电话,作文网站源码,苏宁易购,偷网站源码直接建站链表的有序构建和查找
题目描述 单链表结点的存储结构包含两部分#xff1a;数据、下一结点指针#xff08;默认为空#xff09;。 单链表包含头结点#xff0c;存储实际数据的结点位置从1开始。 现输入一批无序的整数队列#xff0c;编写程序完成以下要求 1#xff09;…链表的有序构建和查找
题目描述 单链表结点的存储结构包含两部分数据、下一结点指针默认为空。 单链表包含头结点存储实际数据的结点位置从1开始。 现输入一批无序的整数队列编写程序完成以下要求 1构建单链表并且把数据按递增顺序插入到链表中并且统计非空指针发生变化的次数。
例如在初始只包含头结点的单链表中依次插入3和2当把3插入时是头结点的next指针发生变化初始头结点的next指针是空的现在指向3的结点所以不计入指针变化次数。
当把2插入时它是插入到头结点和3结点之间这时候头结点的next指针从指向3变成指向2因此这次计入指针变化次数。
总之如果是把一个空的next指针指向新的结点则不计入变化次数如果是把一个非空next指针修改指向新结点则计入变化次数。
2实现对单链表的元素查找。输入一个链表位置返回该位置对应的数据。如果位置非法则输出提示信息看样例。
要求必须使用单链表结构实现上述要求并且不能用第三方算法库或容器类对象
输入 第一行第一个数字n表示样本数目其后跟n个样本。 第二行查找测试次数m 后跟m个待查找的位置。
输出 第一行输出构建链表过程中非空指针变化的总次数格式看样本 第二行输出单链表创建后从头到尾依次输出链表中元素数据 第三行到第n1行对每个查找位置若结点存在输出结点数据否则输出error
输入样例1 6 1 8 5 2 4 3 4 0 2 10 6
输出样例1 非空指针变化4次 1 2 3 4 5 8 error 2 error 8 构建链表
主要是构建链表的过程while循环那里看一下先设置头指针指向的头结点是不存储数据的第一个数据放到头指针的下一个
#includebits/stdc.h
using namespace std;
struct node
{int value;node* nextNULL;
};
int main()
{int n;scanf(%d,n);//new了的就不是NULLnode* listnew node;int change0;for(int i0;in;i){node* nowlist;//先新建该节点node* thnew node;int a2;scanf(%d,a2);th-valuea2;//思路找到第一个比该数大的插到其前面while(1){if(now-nextNULL) {now-nextth;break;}if(now-next-valuea2){th-nextnow-next;now-nextth;change;break;}nownow-next;}}cout非空指针变化change次endl;listlist-next;coutlist-value;node* nolist-next;int a[205];int index2;a[1]list-value;while(no!NULL){printf( %d,no-value);a[index]no-value;nono-next;}coutendl;int m;cinm;for(int i0;im;i){int x;scanf(%d,x);if(x1||xn){printf(error\n);continue;}printf(%d\n,a[x]);}return 0;
}