实现顺序表以及顺序表的简单运算

自定义头文件 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值