您的位置:首页 > 其它

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

2016-04-09 09:23 477 查看
自定义头文件 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: