实验程序是用vc6编译,一定注意文件扩展名为c,不是cpp,下载前面几个测试程序(链表、表、原子中有下载链接)中直接将下面源程序覆盖1.c的内容即可!
再次强烈建议在这些函数上设上断点,按F11跟进去把源码走一遍,才有真正的学习效果!
源程序如下:
#include <stdio.h>
#include <stdlib.h> //rand函数使用
#include <string.h>
#include "include/seq.h"
#pragma comment(lib, "libcii.lib")
//模拟一个数据结构,向【序列】中添加、删除等操作
typedef struct
{
int x;
}MY_T;
void main()
{
//注意:C语言一定要将这些变量声明放在函数的头部
Seq_T s1, s2;
MY_T my[10];
MY_T *pMy = NULL;
int i=0;
//产生自定义的数据结构
for (; i<10; i++)
{
my[i].x = i *10;
}
//创建序列
// 注意:Seq_seq 函数的最后一个参数为NULL
// Seq_seq 是记下每个加入元素的地址,而不是内容,注意!!
//
s1 = Seq_new(0);
s2 = Seq_seq( &my[0], &my[1], &my[2], &my[3], &my[4],
&my[5], &my[6], &my[7], &my[8], &my[9], NULL);
//打印元素的个数
printf("s2 len = %d\n", Seq_length(s2));
//取出来打印
// 注意:Seq_get取出来的是元素的地址!!
pMy = Seq_get(s2, 2);
printf("s2[1] = %d\n", pMy->x);
//修改后,再次打印
Seq_put(s2, 2, &my[9]);
pMy = Seq_get(s2, 2);
printf("s2[1] = %d\n", pMy->x);
//在低端添加,并取出来打印
Seq_addlo(s2, &my[8]);
printf("s2 len = %d, s2[0] = %d\n", Seq_length(s2), ((MY_T*) Seq_get(s2, 0))->x);
//在高端添加,并取出来打印
Seq_addhi(s2, &my[8]);
printf("s2 len = %d, s2[11] = %d\n", Seq_length(s2), ((MY_T*) Seq_get(s2, 11))->x);
//将刚刚在两头添加的删除,恢复原样,并打印
Seq_remhi(s2);
Seq_remlo(s2);
printf("s2 len = %d, s2[0] = %d\n", Seq_length(s2), ((MY_T*) Seq_get(s2, 0))->x);
}