数据结构

线性表

线性表

1.顺序表

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include<stdio.h>

#include<stdlib.h>

typedef struct
{

int *elem;

int length;

}sqlist;

//初始化空表
void init(sqlist *L,int n)
{

L->elem=(int *)malloc(sizeof(int)*n);

L->length=0;

}

//读取
void read(sqlist *L,int n)
{
L->length=n;

for(int i=0;i<n;i++)
{

scanf("%d",&L->elem[i]);

}
}

//合并
void merge(sqlist la,sqlist lb,sqlist *lc)
{

lc->length=la.length*2;

int i=0,j=0,k=0;

while(i<la.length&&j<lb.length)
{

if(la.elem[i]<=lb.elem[j])

lc->elem[k++]=la.elem[i++];

else

lc->elem[k++]=lb.elem[j++];
}

while(i<la.length)
{

lc->elem[k++]=la.elem[i++];

}
while(j<lb.length)
{

lc->elem[k++]=lb.elem[j++];

}
}

int main()
{
int n;

scanf("%d",&n);

sqlist la,lb,lc;

init(&la,n);

init(&lb,n);

init(&lc,n+n);

read(&la,n);

read(&lb,n);

merge(la,lb,&lc);

printf("%d",lc.elem[(lc.length-1)/2]);

return 0;
}

链表

栈和队列

栈和队列