红河个旧网站建设,做网站配置服务器,做音响的是哪个网站,可信网站免费认证静态链表是指使用数组来表示节点。在C中#xff0c;可以使用数组来创建静态列表#xff0c;其中每个元素都有固定的位置和索引。可以通过下标寻址的方式来访问和操作列表中的元素。
单向列表#xff1a;
struct linkednode{int data;int next;
}node[N];
双向链表#x…静态链表是指使用数组来表示节点。在C中可以使用数组来创建静态列表其中每个元素都有固定的位置和索引。可以通过下标寻址的方式来访问和操作列表中的元素。
单向列表
struct linkednode{int data;int next;
}node[N];
双向链表回文链表
struct linkednode {int data;int pre;int next;
}nodes[N]; 输入当然这里是根据题目给的你可以自己设置一个index作为节点的下标每次输入一个节点就 for (int i0;in;i){int id;scanf(%d,id);scanf(%d%d,node[id].data,node[id].next);} 遍历整个链表 这里给定了链表的第一个节点的下标 int cur first;while (cur!-1){printf(%d %d %d\n,cur,node[cur].data,node[cur].next);cur node[cur].next;} int cur first;int result 0;while (cur ! -1){result;cur nodes[cur].next;} 我们可以将下标0作为头节点作为第一个节点的前驱。
那么头插法 //插入m个节点头插法nodes[0].next first;for (int i0;im;i){int id;scanf(%d,id);scanf(%d,nodes[id].data);nodes[id].next nodes[0].next;nodes[0].next id;} 我们依然使用0作为头节点设置两个游标一前一后 nodes[0].next first;// 头节点指向第一个节点//设置两个游标int pre 0;int cur first;// m为 要删除的数值while (cur ! -1){if (nodes[cur].data m){nodes[pre].next nodes[cur].next;cur nodes[pre].next;}else {pre cur;cur nodes[cur].next;}} nodes[0].next first;int pre 0;int cur first;while (cur ! -1){int temp nodes[cur].next;nodes[cur].next pre;pre cur;cur temp;}// 将原本第一个链表的next设置为-1nodes[k].next -1;cur pre;while (cur ! -1){printf(%d %d %d\n,cur,nodes[cur].data,nodes[cur].next);cur nodes[cur].next;} #include cstdioconst int N 110;
struct linkednode {int data;int pre;int next;
}nodes[N];
int isPall(int head1,int head2){while (head1!-1 head2!-1){if (nodes[head1].data ! nodes[head2].data){return 0;}head1 nodes[head1].next;head2 nodes[head2].pre;}return 1;
}
int main(){int n,k;scanf(%d%d,n,k);for (int i0;in;i){int id;scanf(%d,id);scanf(%d%d,nodes[id].data,nodes[id].next);}int pre -1;int cur k;while (cur ! -1){nodes[cur].pre pre;pre cur;cur nodes[cur].next;}printf(%s,isPall(k,pre)? Yes:No);return 0;}