题目:创建一个静态链表,将数组存入链表。查找第3个元素并输出该元素的值,然后释放该结点。

要求:实现静态链表的初始化、分配结点、释放结点功能。

代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef struct{
   int data;
   int cur;
}ct,slinklist[MAX];
void init(slinklist space)
{
    int i = 0;
    for(i = 0; i < MAX - 1; i++)
    {
        space[i].cur = i + 1;
    }
}
int link(slinklist space)
{
    int i;
    i = space[0].cur;
    if(space[0].cur)
    space[0].cur = space[i].cur;
    return i;
}
int select(slinklist space, int e)
{
    int i;
    i = space[0].cur;
    while(i && i <= 3)
        i=space[i].cur;
    return space[i].data;
}
int main()
{
    int s, r, m, i, j;
    ct space[MAX];
    init(space);
    s = link(space);
    r = s;
    printf("链表长度:");
    scanf("%d", &m);
    printf("初始化链表:");
    for(j = 1;j <= m; j++)
    {
        i = link(space);
        scanf("%d", &space[i].data);
        space[r].cur = i;
        r = i;
    }
    printf("第3个结点为:%d", space[4].data);
    return 0;
}