线性顺序表
来源:互联网 发布:python 日期加减 编辑:程序博客网 时间:2024/06/03 18:44
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构 ,C语言代码实现如下
#include <stdio.h>#include <stdlib.h>#define MAXLISTSIZE 1024 //数组大小//定义一个数据结构typedef struct { int data[MAXLISTSIZE];//存储的数据放在数组里,int类型 int last;//数组的内容大小}LinearList;LinearList* list;//定义全局LinearList*void showList();void outputDoc();LinearList* createLinearList();void appendNode();void insertNode();void delNode();void operate();void showList(LinearList* l) { printf("当前线性顺序表的状态:\n"); if(l->last == 0) { printf("当前线性顺序表为null"); } else { int i; for(i = 0; i < (l->last); i++) { printf("[%d]\t",l->data[i]); } } printf("\n");}//打印说明文档void outputDoc() { system("cls"); printf("线性顺序表演示:\n"); printf("a:追加一个节点; i:插入一个节点\n"); printf("d:删除一个节点; e:退出\n");}//创建线性顺序表LinearList* createLinearList() { LinearList* list = (LinearList*)malloc(sizeof(LinearList));//分配LinearList结构大小的内存,并转换为LinearList指针类型 list->last = 0;//初始化数据(节点)大小 return list; } //追加数据void appendNode(LinearList* list, int data) { if((list->last) < MAXLISTSIZE) { list->data[list->last] = data; list->last ++; }} //插入数据,插入一个数据后,后面的数据全部向后移动一个节点 void insertNode(LinearList* list, int data, int pos) { if(pos < 0 || pos > list->last || list->last == MAXLISTSIZE) { char ch; printf("所插数据超出范围!,q回到主界面!\n"); while(1) { ch = getchar(); if(ch == 'q') { operate(); } } } else { int j; for(j = list->last; j >= pos; j--) { //j >= pos ,把pos位置的也向后移动 list->data[j+1] = list->data[j]; //循环后数组大小+1 } list->data[pos] = data; //数组默认从0开始, list->last++; } } //删除数据void delNode(LinearList* list,int pos){ if(pos < 0 || pos > list->last) { printf("所要删除的数据不在范围内!"); } else { int j; for(j = pos; j < list->last; j++) { //j < list.last list->data[j] = list->data[j+1]; } list->last--; } }//操作函数void operate(){ int data,pos; char ch; while(1) { outputDoc(); showList(list); ch = getchar(); switch(ch) { case 'a': printf("请插入数据:\n"); scanf("%d",&data); appendNode(list,data); break; case 'i': printf("请输入要插入的位置:\n"); scanf("%d",&pos); printf("请输入要插入的数据:\n"); scanf("%d",&data); insertNode(list,data,pos); break; case 'd': printf("请输入要删除数据的位置:\n"); scanf("%d",&pos); delNode(list,pos); break; case 'e': system("exit"); break; default: printf("未知操作!\n"); break; } }}//主函数 int main() { list = createLinearList(); operate(); return 0;}
运行之后
0 0
- 线性表-顺序表
- 线性表--- 顺序表
- 线性表顺序表
- 线性表->顺序表
- 线性表- 顺序表
- 线性表--顺序表
- 线性表---顺序表
- 线性表--顺序表
- 线性表---顺序表
- 【线性表】顺序表
- 线性表--顺序表
- 线性表(顺序表)
- 线性表---顺序表
- 线性表--顺序表
- 线性表-顺序表
- 线性表-顺序表
- 数据结构--顺序线性表
- 线性表顺序存贮
- [game]暴雪游戏中的多样性日常系统
- 工欲善其事——eclipse的安装
- hdu4778 Gems Fight!
- oj第九周练习 统计出其中英文字母、数字、空格和其他字符的个数
- 图片的缓存
- 线性顺序表
- CSS基础-样式类型
- 软件测试
- dataTables 获取表格数据及选中行数据
- u盘安装mac系统 (2016最新)
- 为什么开始写博客
- C++设计模式——策略模式
- java字符串分解 StringTokenizer用法
- 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。