c语言线性表

c语言的线性表,还没有完善


 1 #include<stdio.h>
2 #define MAXSIZE 100 //初始空间分配量
3 #define OK 1
4 #define ERROR 0
5 #define TRUE 1
6 #define FALSE 1
7 typedef int ElemType; //类型为int
8 typedef int Status;//函数的返回类型,此处为int
9 typedef struct
10 {
11 ElemType data[MAXSIZE];
12 int length;
13 }SqList;
14 /*用e返回获取的函数值,当i超出线性表范围,则返回ERROR*/
15 Status GetElem(SqList L,int i,ElemType *e)
16 {
17 if(L.length==0||i<1||i>L.length)
18 return ERROR;
19 *e=L.data[i-1];
20 return OK;
21 }
22 Status LisrInsert(SqList *L,int i,ElemType e)//插入元素操作
23 {
24 int k;
25 if(L->length==MAXSIZE)//线性表已满
26 return ERROR;
27 if(i<1||i>L->length)//当i不在范围内
28 {
29 return ERROR;
30 }
31 if(i<=L->length)//插入的数据不在表尾
32 {
33 for(k=L->length-1;k>=i-1;k--)//将插入位置后的数据元素向后移一位
34 L->data[k+1]=L->data[k];
35 }
36 L->data[i-1]=e;//将新元素插入
37 L->length++;
38 return OK;
39 }
40 /*结果,删除L的第i个元素,并用e返回值,L的长度减一*/
41 Status ListDelete(SqList *L,int i,ElemType *e)
42 {
43 int k;
44 if(L->length==0)//线性表为空
45 return ERROR;
46 if(i<1||i>L->length)//删除位置不正确
47 return ERROR;
48 *e=L->data[i-1];
49 if(i<L->length)//如果删除的不是最后的位置
50 {
51 for(k=i;k<L->length;k++)//将删除位置后继元素前移
52 L->data[k-1]=L->data[k];
53
54 }
55 L->length--;
56 return OK;
57
58 }
59 /* 初始化顺序线性表 */
60 void InitList(SqList *L)
61 {
62 L->length=0;
63
64 }

时间: 2024-11-08 18:55:14

c语言线性表的相关文章

C语言 线性表的操作~(未完)

#include <stdio.h> #include <malloc.h> typedef struct{ int *elem; //基地址 int length; int listsize; }Seqlist;//定义Seq这个新的数据类型 int getGem(Seqlist L,int i,int *e){ if(i>L.length || i<1 || L.length ==0 ) return 0; *e = *(L.elem+i-1); printf(&q

数据结构线性表链表的C语言实现

                                                                                      数据结构线性表链表的C语言实现      说明:线性表是一种最简单的线性结构,也是最基本的一种线性结构,所以它不仅是学习中的重点,也是应用开发非常常用的一种数据结构.它可以分为顺序表和链表.它的主要操作是数据元素的插入,删除,以及排序等.接下来,本篇文章将对线性表链表的基本操作和运用进行详细的说明(包含在源代码的注释中),并给

(续)线性表之双向链表(C语言实现)

在前文实现单向链表的基本操作下,本文实现 双向链表的基本操作. 双向链表与单链表差异,是双向链表结点中有前向指针和后向指针. 所以在插入和删除新结点元素时候不见要考虑后向指针还要考虑 前向指针. 以下是双向链表的C代码: #include<stdio.h> typedef struct node { int data; struct node *next; struct node *prior }Node; //链表的初始化 Node* InitList(int number) { int i

线性表之顺序存储结构(C语言动态数组实现)

线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链式存储结构:是用一段一段连续的内存空间存储表中每一行的数据,段与段之间通过一个引用(指针)相互连接来,形成一个链式的存储结构 看到顺序存储结构的图示,我们可能会马上联想到C语言的数组.是的,数组就是一种典型的顺序存储数据结构.下面我通过一个实例,来实现对顺序存储结构中的数据增.删.改.查的操作. 首

使用C语言实现线性表

线性表是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列,序列中的每个数据元素,可以是一个数字,可以是一个字符,也可以是复杂的结构体或对象.例如:1,2,3,4,5是一个线性表,A,B,C,D...Z是一个线性表,一列列车的车厢1,车厢2...车厢n是一个线性表. 线性表的机内表示法(又称存储结构)有2种,一种是顺序存储结构,另一种是链式存储结构. 顺序存储结构,顾名思义就是按顺序来存储的一种存储结构,比如线性表(1,2,3,4,5),共计5个元素,每个int型的数据元素假设占用

学习使用C语言实现线性表

线性表是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列,序列中的每个数据元素,可以是一个数字,可以是一个字符,也可以是复杂的结 构体或对象.例如:1,2,3,4,5是一个线性表,A,B,C,D...Z是一个线性表,一列列车的车厢1,车厢2...车厢n是一个线性表. 线性表的机内表示法(又称存储结构)有2种,一种是顺序存储结构,另一种是链式存储结构. 顺序存储结构,顾名思义就是按顺序来存储的一种存储结构,比如线性表(1,2,3,4,5),共计5个元素, 每个int型的数据元素假设

&lt;2014 05 16&gt; 线性表、栈与队列——一个环形队列的C语言实现

栈与队列都是具有特殊存取方式的线性表,栈属于先进后出(FILO),而队列则是先进先出(FIFO).栈能够将递归问题转化为非递归问题,这是它的一个重要特性.除了FILO.FIFO这样的最普遍存取方式外,还有一些扩展的数据结构,如双端队列.双栈.超队列.超栈等,它们是一种扩展与变异结构. 线性表有顺序存储和链接存储两类,这是针对计算机的线性存储空间作出的分类.前者可以是数组,后者可以是链表.字符串是线性表最常见的应用. 这里我用C语言实现了一个基于数组环形队列,它具有固定的队列空间.相比于链表实现,

数据结构算法C语言实现(一)---2.3线性表的顺序表示和实现

注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实现,主要操作包括建表,插入元素,删除元素,查找元素,合并表等操作,根据书中伪代码编写了C语言,使用int类型进行了测试,需要注意的是查找元素时使用了函数指针,C语言初学者不易理解,可查阅相关书籍学习. 二.头文件 1 //head.h 2 /** 3 My Code 4 */ 5 #include

数据结构算法C语言实现(二)---2.3线性表的链式表示和实现之单链表

一.简述 [暂无] 二.头文件 1 #ifndef _2_3_part1_H_ 2 #define _2_3_part1_H_ 3 //2_3_part1.h 4 /** 5 author:zhaoyu 6 email:[email protected] 7 date:2016-6-4 8 note:realize my textbook <<数据结构(C语言版)>> 9 */ 10 //----线性表的单链表存储结构---- 11 /** 12 My Code 13 to mak