先输入N个整数,按照输入的顺序建立链表。然后遍历并输出偶数位置上的结点信息。
第一行输入整数的个数N 1≤N≤100;第二行依次输入N个整数。
输出该链表偶数位置上的结点的信息。
输入
2
8
12 56 4 6 55 15 33 62
3
1 2 1
输出
56 6 15 62
2
供参考:
#include <stdio.h>
#include <malloc.h>
typedef struct Node {// 链表节点结构
int data;
struct Node* next;
}Node, * LinkList;
void destroyNodes(LinkList L)
{
Node *pL = NULL;
while(L){
pL = L;
L = pL->next;
free(pL);
}
}
void show(LinkList L)//输出单链表偶数位置结点信息
{
if (L == NULL || L->next == NULL) return;
int i = 0;
Node* p = L->next;
while (p) {
if ((i+1) % 2 == 0)
printf(i+1 == 2 ? "%d":" %d", p->data);
i++;
p = p->next;
}
printf("\n");
}
// 创建链表
void createListFromHead(LinkList* L, int n)
{
Node* pL;
int i;
(*L) = (Node*)malloc(sizeof(Node));// 创建头结点
(*L)->data = -1;
(*L)->next = NULL;
pL = (*L);
for (i = 0;i < n; i++) // 生成链表
{
Node* p = (Node*)malloc(sizeof(Node));
p->next = NULL;
scanf("%d", &p->data);
pL->next = p;
pL = p;
}
}
int main()
{
int n, m;
scanf("%d", &n);
while (n--){
scanf("%d", &m);
LinkList L = NULL;
createListFromHead(&L, m);
show(L);
destroyNodes(L);
}
return 0;
}