C语言顺序表的静态建立
线性表
定义:n个相同数据元素组成的有限的序列;
1. 除第一个元素以外,每个元素都有一个前驱;
2. 除最后一个元素以外,每个元素都有一个后继;
3. 一对一的关系;
建立基础信息,静态数组的最大数据个数,保存的类型
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef int Elem_Type;
创建一个结构体,用途保存对应类型的数组和索引
typedef struct list
{
Elem_Type data[MAX_SIZE];
int index;
}List;
结构体分配内存空间
List *list_all = (List*)malloc(sizeof(List));
list_all->index = 0; // 对初始索引赋值
添加一条数据
// 添加一个信息
int add_node(List *a,Elem_Type data)
{
if((a->index)<MAX_SIZE)
{
a->data[(a->index)++] = data;
}
return 0;
}
删除一条数据
// delete a information;
int delete_node(List *a)
{
a->data[--(a->index)] = 0;
return 1;
}
查找对应索引位置的数据
// find information for a index;
Elem_Type find_node(List *a,int index)
{
if(index<=(a->index))
{
return a->data[index];
}
return -1;
}
查找数据对应的索引位置
// find index for a information
int find_index(List *a,Elem_Type data)
{
if(a)
{
int i;
for(i=0;i<(a->index);i++)
{
if(a->data[i] == data)
{
return i;
}
}
}
return -1;
}
输出所有数据
// putout all information
int print_all(List *a)
{
int i;
for(i=0;i<(a->index);i++)
{
printf("%d\t",(a->data[i]));
}
printf("\n");
return 0;
}
删除对应索引位置的信息
// delete a information for a index
int del_index_node(List *a,int index)
{
if(index<(a->index))
{
int i;
for(i=index;i<a->index;i++)
{
a->data[i] = a->data[(i+1)];
}
a->index--;
}
return 1;
}
主函数
int main()
{
List *list_all = (List*)malloc(sizeof(List));
list_all->index = 0;
add_node(list_all,1);
add_node(list_all,2);
add_node(list_all,3);
add_node(list_all,4);
add_node(list_all,5);
add_node(list_all,6);
del_index_node(list_all,2);
del_index_node(list_all,1);
print_all(list_all);
}