网站开发百度云,深圳 网站开发公司电话,百度推广客户端官方下载,市网站建设简介
静态链表也是由数据域与指针域两部分组成的一个结构体#xff0c;只不过指针域是由整数下标表示
struct node{int data;//数据域int next;//指针域};求两个链表首个公共结点的地址
#include cstdio
#include cstring
using namespace std;
const int …简介
静态链表也是由数据域与指针域两部分组成的一个结构体只不过指针域是由整数下标表示
struct node{int data;//数据域int next;//指针域};求两个链表首个公共结点的地址
#include cstdio
#include cstring
using namespace std;
const int maxn100000000;
struct node{char data;int next;bool flag;
}nodes[maxn];
int main(){for(int i0;imaxn;i)nodes[i].flagfalse;int addr1,addr2,n;//链表1的首地址addr1、个数n,链表2的首地址addr2scanf(%d%d%d,addr1,addr2,n);int addr,next;char data;for(int i0;in;i){//将链表信息边输入边存入scanf(%d%s%d,addr,data,next);nodes[addr].datadata;nodes[addr].nextnext;}int j;for( jaddr1;j!-1;jnodes[j].next)//遍历链表1nodes[j].flagtrue;//改flag为truefor( jaddr2;j!-1;jnodes[j].next){//遍历链表2if(nodes[j].flagtrue) break;//找到在链表1中首个出现过的结点}if(j!-1) printf(%05d\n,j);//返回结点地址else printf(-1\n);return 0;
}由小到大输出静态链表
#include cstdio
#include algorithm
using namespace std;
const int maxn100000;
struct node{int now;int data;int next;bool flag;
}nodes[maxn];
bool cmp(node a,node b){//排序后flagtrue都在flagfalse左端if(a.flagfalse||b.flagfalse)//碰到无效结点排序return a.flagb.flag;//true在前,false在后else return a.datab.data;//给结点排序
}
int main(){for(int i0;imaxn;i)nodes[i].flagfalse;int begin,num;scanf(%d%d,begin,num);int addr1,data,addr2;for(int i0;inum;i){scanf(%d,addr1);scanf(%d%d,nodes[addr1].data,nodes[addr1].next);nodes[i].nowaddr1;}int positionbegin,count0;while(position!-1){nodes[position].flagtrue;//标记count;positionnodes[position].next;}if(count0)printf(0 -1\n);else{sort(nodes,nodesmaxn,cmp);//地址不连续只能全部都考虑printf(%d %d\n,count,nodes[0].now);//输出首个地址for(int i0;icount;i){if(i!count-1)printf(%d %d %d\n,nodes[i].now,nodes[i].data,nodes[i].next);elseprintf(%d %d -1\n,nodes[i].now,nodes[i].data);}}return 0;
}