数据结构 顺序表(c语言)

数据结构-----顺序表

C语言实现《顺序表》增,删,改,查

编写顺序表思想:

1. 规范的编程

头文件 list.h

接口封装 list.c

接口的测试 test.c

2. 谁申请谁释放

申请完毕空间,一定要主动释放。

  • 1

3. 解题思路 :

画图;

分析步骤;

伪代码;

需要将伪代码修改为真实可用的代码

  • 1

顺序表特点:

1、大小固定,访问方便;

2、地址连续、存储密度大;

3、删除或者插入时,需要移动元素;

4、除第0个元素外,其它元素都有前驱;

除最后一个元素外,其它元素都有后继;

5、表满不能插入,表空不能删除

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

优点:

数据结构  顺序表(c语言)


缺点:

数据结构  顺序表(c语言)


代码部分:

顺序表操作

创建、销毁、尾插、尾删、查找、更新、判空、判满、遍历

头文件 list.h

#ifndef _LIST_H_

#define _LIST_H_

//常量定义

enum e_result

{

NO = -1,

OK ,

};

#define SIZE 10

//类型定义

/*定义一个数据类型来描述顺序表*/

typedef int dataType;

struct list

{

dataType data[SIZE]; //数据

int count; //存入数据个数,(元素下标)

};

typedef struct list LIST;

//全局变量申明

//创建线性表

LIST * createList();

//销毁线性表

void destroyList( LIST * pList );

//插入数据到线性表中

int insertDataToList( LIST * pList, int offset, dataType newData );

//输出线性表中所有元素

void showList( LIST * pList );

//删除线性表中某个元素

int deleteDataFromList( LIST * pList, int offset, dataType pData );

//查找指定的元素在线性表中的位置

int searchDataFromList( LIST * pList, dataType searchData );

//修改线性表中的元素

int updateDataToList( LIST * pList, dataType oldData, dataType newData );

#endif //_LIST_H_

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

接口封装 list.c

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include "list.h"

//创建顺序表

LIST * createList()

{

LIST * pList = NULL; //定义一个LIST类型指针

数据结构  顺序表(c语言)


//在堆区申请一段空间当作线性表

pList = ( LIST * )malloc( sizeof(LIST) );

if ( NULL != pList )

{

//清空

memset( pList, 0, sizeof(LIST) );

}

//返回

return pList;

}

//销毁线性表

void destroyList( LIST * pList )

{

if ( NULL == pList )

{

return ;

}

free( pList );

pList = NULL;

数据结构  顺序表(c语言)


}

//插入数据到线性表中

int insertDataToList( LIST * pList, int offset, dataType newData )

{

//定义变量

int i = 0;

//判断参数

if ( NULL == pList //表不存在

|| SIZE <= pList -> count //表满不能插

|| offset < 0 //插入位置不能小于0

|| offset > pList -> count) //插入位置不能大于顺序表大小

{

return NO;

}

数据结构  顺序表(c语言)


//移动元素

for ( i = pList -> count - 1; i >= offset; i-- )

{

pList -> data[ i + 1 ] = pList -> data[ i ];

}

//插入元素

pList -> data[offset] = newData;

//更新计数器

pList -> count++;

return OK;

}

/*显示输出*/

void showList( LIST * pList )

{

int i = 0;

if ( NULL =

数据结构  顺序表(c语言)



分享到:


相關文章: