- 特点
- 存在唯一一个称为“第一个”的元素
- 存在唯一一个称为“最后一个”的元素;
- 除第一个元素外,序列中的每个元素只有一个直接前驱
- 除最后一个元素外,序列中的每个元素只有一个直接后继
- 数据元素的类型都是相同的
顺序表操作
- SeqList.h
#ifndef __SEQLIST_H__ #define __SEQLIST_H__ #define MAXSIZE 128 typedef int datatype; typedef struct { datatype data[MAXSIZE]; // 从下标1开始,即可以存放的位置:1~MAXSIZE-1 int len; }SeqList; // 顺序表的初始化 SeqList* Init_SeqList(); // 顺序表的创建 void CreateSeqList(SeqList* L); // 顺序表的插入 void Insert_SeqList(SeqList* L, int i, datatype x); // 顺序表的打印 void print_SeqList(SeqList* L); // 顺序表的删除 void Delete_SeqList(SeqList* L, int i); //顺序表查找 int Location_SeqList(SeqList* L, datatype x); #endif // !1 - SeqList.c
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include"SeqList.h" SeqList* Init_SeqList() { /* 构造空顺序表 */ SeqList* L = (SeqList*)malloc(sizeof(SeqList)); L->len = 0; return L; // 注意这里是可以返回局部变量的,不能返回的是局部变量的引用,不要搞混了 } void CreateSeqList(SeqList* L) { int i = 0; printf("Input length of list: "); scanf("%d",&L->len); printf("Input elements of List:\n"); for (i = 1; i <= L->len; i++) // 注意data数组的下标是从0开始的 scanf("%d",&L->data[i]); } void Insert_SeqList(SeqList* L, int i, datatype x) { if (L->len == MAXSIZE - 1) { printf("SeqList is full\n"); } else { if (i > L->len - 1 || i < 1) printf("The position is invalid"); else { L->len++; int iTmp = L->len; while (iTmp > i) { L->data[iTmp] = L->data[iTmp-1]; iTmp--; } L->data[i] = x; } } } void print_SeqList(SeqList* L) { for (int i = 1; i <= L->len; i++) printf("%d ",L->data[i]); printf("\n"); } void Delete_SeqList(SeqList* L, int i) { if (i > L->len || i < 1) printf("The position is invalid\n"); else { while (i <= L->len) { L->data[i] = L->data[i + 1]; i++; } L->len--; } } int Location_SeqList(SeqList* L, datatype x) { /* // 从前往后依次查找 if (L->len == 0) printf("The SeqList is empty\n"); else { int i = 1; while (i <= L->len) { if (L->data[i] == x) return i; i++; } } */ L->data[0

最低0.47元/天 解锁文章
6686

被折叠的 条评论
为什么被折叠?



