【C语言】实现静态顺序表
来源:互联网 发布:陶晶锅涂层有毒吗 知乎 编辑:程序博客网 时间:2024/04/30 13:44
text.h#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>#define MAX_SIZE 10typedef int DataType;typedef struct Seqlist{DataType array[MAX_SIZE]; //存储数据的数组size_t size; //存储数据的个数 }SeqList;void Init(SeqList *seq);//初始化顺序表 void Destory(SeqList *seq);//销毁顺序表void Print(SeqList *seq);//打印顺序表void PushBack(SeqList *seq, DataType x);//尾部插入数字void PopBack(SeqList *seq, DataType x);//尾部删除数字void PushFront(SeqList *seq, DataType x);//头部插入数字void PopFront(SeqList *seq, DataType x);//头部删除数字void Insert(SeqList *seq, size_t pos,DataType x);//void Remove(SeqList *seq, DataType x);void Erase(SeqList *seq, DataType x);int find(SeqList *seq, DataType x);void Removeall(SeqList *seq, DataType x);void BubblesSort(SeqList *seq);//冒泡排序void SelectSort(SeqList *seq);//选择排序void InsertSort(SeqList *seq);//插入排序text.c#include"text.h"void Init(SeqList *seq)//初始化顺序表{assert(seq);memset(seq->array, 0, sizeof(DataType)*MAX_SIZE);seq->size = 0;}void Destory(SeqList *seq)//销毁顺序表{assert(seq);memset(seq->array, 0, sizeof(DataType)*MAX_SIZE);seq->size = 0;}void Print(SeqList *seq)//打印顺序表{for (size_t i = 0; i < seq->size; i++){printf("%d ", seq->array[i]);}printf("\n");}void PushBack(SeqList *seq, DataType x)//尾部插入数字{assert(seq);if (seq->size >= MAX_SIZE){printf("list is full!\n");return;}else{seq->array[seq->size] = x;seq->size++;}}void PopBack(SeqList *seq, DataType x)//尾部删除数字{assert(seq);if (seq->size == 0){printf("list is empty!\n");return;}else{seq->size--;}}void PushFront(SeqList *seq, DataType x)//头部插入数字{assert(seq);if (seq->size+1 >= MAX_SIZE)//数组的下标是从0开始的{printf("list is full!\n");return;}else{seq->size++;for (int i = seq->size; i > 0; i--)//i的值从最后面开始{seq->array[i] = seq->array[i - 1];//将数组的倒数第二个数字往最后面移动,依次往前,直到数组的下标到0的时候}seq->array[0] = x;//将x的值赋值给数组的第一个}}void PopFront(SeqList *seq, DataType x)//头部删除数字{assert(seq);if (seq->size == 0){printf("list is empty!\n");return;}else{for (int i = 1; i < seq->size; i++){seq->array[i] = seq->array[i + 1];}seq->size--;}}void Insert(SeqList *seq, size_t pos, DataType x)//{assert(seq);if (seq->size >= MAX_SIZE){printf("list is full!\n");return;}if (pos<0 || pos>seq->size){printf("pos illeage input!\n");return;}else{seq->size--;for (size_t i = seq->size; i > pos; i--){seq->array[i] = seq->array[i - 1];}seq->array[pos] = x;}}void Erase(SeqList *seq, size_t pos){assert(seq);if (pos<0 || pos>seq->size){printf("illeage input\n");return;}else{for (size_t i = pos; i < seq->size; i++){seq->array[i] = seq->array[i + 1];}--seq->size;}}int find(SeqList *seq, DataType x){assert(seq);for (rsize_t i = 0; i < seq->size; i++){if (seq->array[i] == x);return i;}return -1;}void Remove(SeqList *seq, DataType x){assert(seq);if (seq->size == 0){printf("list is empty!");return;}else{int i = find(seq, x);if (x,-1){Erase(seq, i);}}}void Removeall(SeqList *seq, DataType x){assert(seq);rsize_t i = 0, j = 0;for (i = 0; i < seq->size; i++){if (seq->array[i] != x){seq->array[j] = seq->array[i];j++;}}seq->size -= i - j;}main.c#include"text.h"SeqList s;void Text1()//尾部插入和删除{printf("尾部插入:\n");Init(&s);PushBack(&s, 8);PushBack(&s, 2);Print(&s);PushBack(&s, 3);PushBack(&s, 4);Print(&s);PushBack(&s, 7);PushBack(&s, 9);Print(&s);printf("尾部删除:\n");Print(&s);PopBack(&s, 1);Print(&s);PopBack(&s, 1);Print(&s);PopBack(&s, 1);Print(&s);PopBack(&s, 1);Print(&s);PopBack(&s, 1);Print(&s);PopBack(&s, 1);Print(&s);}void Text2()//头部插入和删除{printf("头部插入:\n");PushFront(&s, 5);Print(&s);PushFront(&s, 7);Print(&s);PushFront(&s, 0);Print(&s);PushFront(&s, 1);Print(&s);PushFront(&s, 2);Print(&s);PushFront(&s, 6);Print(&s);PushFront(&s, 0);Print(&s);PushFront(&s, 5);Print(&s);PushFront(&s, 2);Print(&s);printf("头部删除:\n");Print(&s);PopFront(&s, 1);Print(&s);PopFront(&s, 1);Print(&s);PopFront(&s, 1);Print(&s);PopFront(&s, 1);Print(&s);PopFront(&s, 1);Print(&s);PopFront(&s, 1);Print(&s);PopFront(&s, 1);Print(&s);PopFront(&s, 1);Print(&s);PopFront(&s, 1);Print(&s);}void Text3()//任意位置插入数字{printf("原数组:\n");PushBack(&s, 8);PushBack(&s, 2);PushBack(&s, 3);PushBack(&s, 4);PushBack(&s, 7);PushBack(&s, 9);Print(&s);printf("任意位置插入数字:\n");Insert(&s, 0, 3); Print(&s);Insert(&s, 1, 5);Print(&s);Insert(&s, 2, 6);Print(&s);printf("\n");}void Text4()//移动数字{printf("原数组:\n");PushBack(&s, 8);PushBack(&s, 2);PushBack(&s, 3);PushBack(&s, 4);PushBack(&s, 7);PushBack(&s, 9);Print(&s);Remove(&s, 1);Print(&s);Removeall(&s, 7);Print(&s);}int main(){Text1();Text2();Text3();Text4();system("pause");return 0;}
0 0
- C语言实现静态顺序表
- 【C语言】实现静态顺序表
- c语言实现静态顺序表
- 静态顺序表------C语言实现
- C语言实现顺序表--静态
- C语言静态顺序表的实现
- C语言实现静态顺序表
- 静态顺序表(C语言实现)
- 静态顺序表(C语言实现)
- 用C语言实现静态顺序表
- C语言实现静态顺序表
- 用C语言实现静态顺序表
- 静态顺序表-c语言实现
- c语言实现静态顺序表
- c语言实现静态顺序表
- c语言实现静态顺序表
- C语言实现静态顺序表
- C语言实现 静态顺序表
- Linux下灾难恢复
- c语言部分关键字简析
- 【问题】应用程序池中无Framework v4.0
- JAVA中的内部类
- prime算法
- 【C语言】实现静态顺序表
- 头插法和尾插法创建单链表
- 【51 Nod】 1120 机器人走方格 V3
- 2016/12/3(JS内置对象)
- Birds in Forest
- Python 读取图片文件为矩阵和保存矩阵为图片
- 编程过程中遇到的错误
- 2016123
- Qt在Windows下的三种编程环境搭建