顺序表的C语言实现

一直在复习数学,想着要在六月底之前把数学三门四本书都过一遍,最近看到了线性代数了,好多学了都忘记了,慢慢来吧!

前段时间看的线性表了,才看了一点点,关于顺序表大致实现了下,后面抽看看看数据结构了,数学得全力复习了。准备暑假开始系统复习专业课,加油吧!

顺序表代码如下,简单实现了下,正好抓住这个机会复习了结构体,指针等知识。main()函数里写的比较乱,主要在于其他子函数里的实现


  1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #define LIST_SIZE 100
5
6 typedef int ElemType;
7 ElemType location;
8
9 typedef struct
10 {
11 int elem[LIST_SIZE];
12 int length;
13 }SqList;
14 // 初始化顺序表
15 int InitList(SqList *L,int len)
16 {
17 L->length = len;
18 return 1;
19 }
20 // 输入顺序表中元素
21 int ScanList(SqList *L)
22 {
23 int i;
24 for(i = 0;i < L->length;i++)
25 {
26 scanf_s("%d",&L->elem[i]);
27 }
28 return 1;
29 }
30 // 遍历顺序表
31 void TraverseList(SqList *L)
32 {
33 int i;
34 for(i = 0;i < L->length;i++)
35 {
36 printf("%d ",L->elem[i]);
37 }
38 }
39 // 销毁顺序表
40 int DestoryList(SqList *L)
41 {
42 free(L->elem);
43 L->length = 0;
44 return 1;
45 }
46 // 清空顺序表
47 int ClearList(SqList *L)
48 {
49 L->length = 0;
50 return 1;
51 }
52 // 判断顺序表是否为空
53 int ListIsEmpty(SqList *L)
54 {
55 if(L->length == 0)
56 {
57 return 0;
58 }else
59 {
60 return 1;
61 }
62 }
63 // 按照下标查找顺序表中元素
64 int GetList(SqList *L, int i)
65 {
66 if(i < 0||i > L->length)
67 {
68 return 0;
69 }else
70 {
71 return 1;
72 }
73 }
74 // 查找元素的位置
75 int LocatList(SqList *L, ElemType e)
76 {
77 int i = 0;
78 for(i = 0;i < L->length;i++)
79 {
80 if(L->elem[i] == e)
81 {
82 location = i;
83 return 1;
84 }
85 }
86 return 0;
87 }
88 // 插入元素
89 int InsertList(SqList *L,int n)
90 {
91 int *p,*q;
92
93 if(L->length == 0)
94 {
95 L->elem[0] = n;
96 ++L->length;
97 }
98 q = &(L->elem[0]);
99 while ((*q <= n)&&(q <= &(L->elem[L->length - 1])))
100 {
101 ++q;
102 }
103 ++L->length;
104 for(p = &(L->elem[L->length -1]);p >= q;--p)
105 {
106 *(p + 1) = *p;
107 *p = n;
108 }
109
110 return 0;
111 }
112 // 删除元素
113 int DeleteList(SqList *L,int n)
114 {
115 int *p, *q;
116 q = &(L->elem[0]);
117 while ((*q < n)&&(q < &(L->elem[L->length - 1])))
118 {
119 ++q;
120 }
121 for(p = &(L->elem[L->length - 1]);p >= q;++q)
122 {
123 *q = *(q + 1);
124 }
125 --L->length;
126 return 0;
127 }
128
129 int main()
130 {
131 int i;
132 int lengthOfNew;
133 int search;
134 int insertNum;
135 int deleteNum;
136 SqList L;
137 printf("请输入顺序表长度:\n");
138 scanf_s("%d",&lengthOfNew);
139 if(InitList(&L,lengthOfNew))
140 {
141 printf("顺序表建立完成\n");
142 }
143 printf("输入顺序表中的元素:\n");
144 ScanList(&L);
145 printf("\n");
146 printf("顺序表中元素为:\n");
147 TraverseList(&L);
148 printf("\n");
149 printf("输入元素下标进行查找:\n");
150 scanf_s("%d",&i);
151 if(!GetList(&L,i))
152 {
153 printf("越界\n");
154 }else
155 {
156 printf("查找的元素为:%d\n",L.elem[i-1]);
157 }
158 printf("请输入需要查找的元素:\n");
159 scanf_s("%d",&search);
160 if(LocatList(&L,search))
161 {
162 printf("查找的元素位置为:%d\n",location + 1);
163 }else
164 {
165 printf("没有查找到该元素!\n");
166 }
167 printf("输入要插入的元素:\n");
168 scanf_s("%d",&insertNum);
169 InsertList(&L, insertNum);
170 TraverseList(&L);
171 printf("\n");
172 printf("输入要删除的元素:\n");
173 scanf_s("%d",&deleteNum);
174 DeleteList(&L, deleteNum);
175 TraverseList(&L);
176 printf("\n");
177 system("pause");
178 return 0;
179 }

顺序表的C语言实现,布布扣,bubuko.com

时间: 2024-10-07 00:01:06

顺序表的C语言实现的相关文章

稀疏矩阵的三元组顺序表的C语言实现

对于没有排序功能的集合来说,都可以使用java.util.Collections.sort()方法进行排序,它除了集合对象以外,还需要提供一个比较器.如果列表中的元素全部都是相同的类型,并且这个类实现了Comparable接口,就可以简单的调用Collections.sort()方法,如果这个类没有实现comparable接口,那么可以创建一个比较器传递一个Comparator实例作为Sort()的第二个参数进行排序,另外,如果不想使用默认的分类顺序进行排序,同样也可以传递一个Comparato

【数据结构】之顺序表(Java语言描述)

之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中,为我们提供了专门的顺序表的数据结构API-- ArrayList . Java中的ArrayList的基本存储思路和C语言中的思路相似,即将所有元素存储在一个数组中,当数组中的元素个数达到某种标准时,就要扩容.由于顺序表中的其他操作在Java和C中的实现方式大同小异,因此,本文不再详细介绍这些操作

【顺序表】 c语言的顺序表

顺序表:一段地址连续的存储单元依次存储数据元素的线性结构. 静态存储的结构: #define MAX_SIZE 5 typedef int DataType; typedef struct SeqList { DataType array[MAX_SIZE]; size_t size; }SeqList; /////////////   顺序表的 增 删 查   ////////////////// void InitSeqList(SeqList* pSeq)  //初始化   { asser

【数据结构】实现顺序表(c语言)

头文件: #ifndef _SEQLIST_H #define _SEQLIST_H #include <stdio.h> #define INIT_SIZE 8 typedef struct SeqList { int *base; size_t size; size_t capacity; }SeqList; // 要实现的函数 void InitList(SeqList *list); int isfull(SeqList *list); int isempty(SeqList *lis

C语言实现顺序表

顺序表是C语言中一种基本的结构,可以存储各种基本类型的数据,而且不但可以存储基本类型的数据,也可以存储一种结构.所以顺序表是一种在学C的过程中必须掌握的结构,通过学习整理,下面来实现一下: 首先,先要想好用什么实现,一般实现最基本的顺序表的话直接用数组实现,我们在这用一个结构体来封装这个顺序表(封装这一概念是在C++中最常用的概念) #define ARRAY_EMPTY -2 #define ARRAY_FULL -1 #define MAX_SIZE 10000 typedef int Da

数据结构笔记(二)--顺序表

线性表 线性结构:最常用,最简单的一种数据结构,其中的数据元素是有序且是有限的,其 基本特点: 存在一个唯一的被称为 第一个 的数据元素 存在一个唯一的被称为 最后一个 的数据元素 除第一个元素外,每一个元素均有唯一 一个直接前驱 除最后一个元素外,每一个元素均有唯一 一个直接后继 2.1 线性表的逻辑结构 2.1.1线性表的定义 线性表(Linear List) :是由n个数据类型相同的数据元素(结点)组成的有限序列.其中 n 为不小于0的整数.数据元素的个数 n 称为线性表的长度 相关术语:

顺序表 C++ 类模板实现

顺序表的C++语言描述 基本运算的算法--置空表.求表的长度.取结点.定位运算.插入运算.删除运算.建立顺序表.输出顺序表 #include <iostream>using namespace std;#define OK 1#define ERROR 0template <class T>class Linklist{public: Linklist() { } int initLinklist(Linklist < T > & L,int maxlistsi

数据结构中构建顺序表

顺序表指的是数据元素在内存中连续分配地址的数组,由于指针无法指出数组长度,编译时不会报错,所有用结构体来表示一个顺序表: 顺序表用C语言的表示方法如下: <span style="font-family: Arial, Helvetica, sans-serif;"> #define OK 1</span> #define ERROR -1 typedef int elem_type; typedef int Statue; // int Arrylength;

数据结构学习总结(1)线性表之顺序表

通过前面的学习知道,具有“一对一”逻辑关系的数据,最佳的存储方式是使用线性表.那么,什么是线性表呢? 线性表,全名为线性存储结构.使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”. 采用线性表将其储存到物理空间中. 首先,用“一根线儿”把它们按照顺序“串”起来,如图 2 所示:                                                             图 2 数据的"线性"结构 图 2 中,左侧是“