您的位置:首页 > 理论基础 > 数据结构算法

数据结构之线性表--顺序结构测试

2009-09-09 22:27 253 查看
#include <iostream>

using namespace std;

/* 线性表 */

#define LIST_INIT_SIZE 5
#define LIST_INCREASE_SIZE 10

typedef struct ListSq {

int *data;
int length; // 长度
int listsize; // 容量
}ListSq;

int createSq(ListSq &l) {
// 初始化线性顺序表
l.data = (int*)malloc(LIST_INIT_SIZE * sizeof(int));
l.listsize = LIST_INIT_SIZE;
l.length = 0;
return 1;
}//createSq

void init(ListSq &l) {
// 初始化内容
for(int i = 0; i < 4; ++i) {
printf("%s", "输入一个数字:");
scanf("%d,", &l.data[i]);
++l.length;
}
}//add

void print(ListSq &l) {
// 打印
for(int i = 0; i < l.length; ++i) {
printf("%d,", l.data[i]);
}
printf("长度:%d", l.length);
}//print

void add_p(ListSq &l, int position, int data) {
// 添加一个元素
if(position < 1 || position > l.length + 1) exit(0);
if(l.length >= l.listsize)
l.data = (int*)realloc(l.data, (l.listsize + LIST_INCREASE_SIZE) * sizeof(int));

for(int i = l.length; i > position - 1; --i) {
l.data[i] = l.data[i - 1];
}
l.data[position - 1] = data;
++l.length;
}

void delete_p(ListSq &l, int position, int &data) {
// 删除元素
if(position < 1 || position > l.length) exit(0);
data = l.data[position - 1];
for(int i = position - 1; i < l.length; ++i) {
l.data[i] = l.data[i + 1];
}
--l.length;
}

void main() {
ListSq l1;
createSq(l1);
init(l1);
print(l1);
printf("/n");
add_p(l1, 2, 9);
print(l1);
printf("/n");
add_p(l1, 2, 8);
print(l1);
printf("/n");
add_p(l1, 2, 7);
print(l1);
printf("/n");
int t;
delete_p(l1, 2, t);
print(l1);
printf("/n");
printf("删除的元素之是%d", t);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息