王道数据结构代码实践----顺序表静态存储(C语言版)
前言
日期:2021年8月25日
书籍:王道2021年数据结构考研复习指导
代码内容:实现顺序表的静态存储,包括初始化,插入新元素,删除新元素,输出,查询
代码难点
1. C语言没有bool数据类型
老生常谈了,C语言没有直接定义好的bool类型,不过我们可以自己宏定义一个啊
#define bool char
#define false 0
#define true 1
2.顺序表的位序从1开始,而数组的位序从0开始
这是最让我觉得生草的地方,写代码中间弄错了好几次,最终代码里每个i代表什么意思我都已经标好了,一会儿之间看源代码吧
3.getchar()和scanf()函数之差
这还是个问题,我还没解决,现在先说现象,等明白了回来补
int a;
while (1)
{
text();
scanf("%d",&a);
// a = getchar();
switch (a)
{
......
}
这里,使用scanf()可以正常输入整型变量,并被switch正常识别,我记得我以前用字母作为输入时,switch抽过风,所以一开始我选择用的getchar(),然后,C99教我做了人,对,我又用回scanf了,具体原因我还没懂,等我懂了再说吧。
源代码
废话不多说了,直接上源代码
//静态分配顺序表
#include <stdio.h>
#include <stdlib.h>
//C语言自定义bool操作
#define bool char
#define false 0
#define true 1
/*数组长度及顺序表的初始化长度*/
#define MAX_SIZE 10
/*数据元素类型*/
typedef int ElemType;
/*顺序表结构定义*/
typedef struct
{
ElemType data[MAX_SIZE]; //顺序表的元素
int length; //顺序表的当前长度
}SqList; //顺序表的类型定义
//基本操作----初始化一个顺序表
void InitList(SqList *L)
{
for(int i = 0 ; i < MAX_SIZE ; i++)
L->data[i] = 0;
L->length = 0;
}
//基本操作----插入操作
/*
在顺序表L的第i(1<=i<=L.length+1)个位置插入新元素e