自定义头文件 my_list.h
#define _CRT_SECURE_NO_WARNINGS
#ifndef __MY_LIST_H__#define __MY_LIST_H__
//文件功能:实现线性表的基本运算
//1:顺序表的插入预算
//2:顺序表中元素的逆序
//3:顺序表的删除运算
#define max_size 1024 //定义顺序表的上限长度
typedef int datatype;
typedef struct
{
datatype data[max_size];
int length;
}data_list;
void set_null(data_list *L)
{
L->length = 0;
} // 清空链表。
void reversr_list(data_list *L) //函数功能 :逆序一个数组
{
int start, end;
datatype swap;
for (start = 0, end = L->length - 1; start < end; start++, end--)
{
swap = L->data[start];
L->data[start] = L->data[end];
L->data[end] = swap;
}
}
void insert(data_list *L, int x)
{
int i = 0;
int j;
while ((i <= L->length - 1) && (x > L->data[i])) //按照升序判断插入元素的下标位置
{
i++;
}
for (j = L->length - 1; j>i; j--)
{
L->data[j + 1] = L->data[j]; //找到后数组中的元素后移动一位
}
L->data[i + 1] = x;
L->length++;
}
void delete_list(data_list *L, int i) // 函数功能:实现线性表 某一个值删除的运算
{ // 参数:结构体指针,所删除元素的下标
int j;
datatype swap;
for (j = i; j <= L->length - 1; j++)
{
L->data[j - 1] = L->data[j];
}
L->length--;
}
void input_list(data_list *L)
{
printf("请输入顺序表的初始数据,—1表示结束:");
do
{
scanf("%d", &L->data[L->length]);
L->length++;
} while (L->data[L->length - 1] != -1);
L->length--;
}
void print_list(data_list *L)
{
int i;
for (i = 0; i <= L->length - 1; i++)
{
printf("%d ", L->data[i]);
}
printf("\n");
}
int init()
{
data_list L1, L2, L3;
int i, x;
int num;
printf("***********************************************\n");
printf("*******1:逆序线性表操作 ************\n");
printf("*******2:线性表插入一个数 ************\n");
printf("*******3:线性表删除某位置元素的操作***********\n");
printf("input a num:\n");
scanf("%d", &num);
switch (num)
{
case 1:
{
set_null(&L1);
input_list(&L1);
reversr_list(&L1);
printf("逆序后的顺序表如下:");
print_list(&L1);
break;
}
case 2:
{
set_null(&L2);
input_list(&L2);
printf("输入要插入的数据:");
scanf("%d", &x);
insert(&L2, x);
printf("插入后的顺序表元素如下:");
print_list(&L2);
break;
}
case 3:
{
set_null(&L3);
input_list(&L3);
printf("输入要删除的数据的位置:");
scanf("%d", &x);
delete_list(&L3, x);
printf("删除后的顺序表元素如下:");
print_list(&L3);
break;
}
default:
{
printf("the input is error!!!");
}
}
}
C文件:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include "my_list.h"
//文件功能:实现线性表的基本运算
//1:顺序表的插入预算
//2:顺序表中元素的逆序
//3:顺序表的删除运算
void set_null(data_list *L);
void reversr_list(data_list *L); //函数功能 :逆序一个数组
void insert(data_list *L, int x);
void delete_list(data_list *L, int i); // 函数功能:实现线性表 某一个值删除的运算// 参数:结构体指针,所删除元素的下标
void input_list(data_list *L);
void print_list(data_list *L);
int init();
int main()
{
init();
return 0;
}
#endif