顺序表的逆置
来源:互联网 发布:腾鹰软件 编辑:程序博客网 时间:2024/06/06 05:08
例题:试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,……an)逆置为(an,……a1)。
#include <stdio.h>#include<stdlib.h>#include<assert.h>#define INITSIZE 10typedef struct DSeqList{int *elem;//指向存放数据的动态数组int length;//有效数据个数int listsize;//总容量}DSeqList,*PDSeqList;//初始化void InitSeqList(PDSeqList ps){assert(ps != NULL);if(ps == NULL){return ;}ps->elem = (int *)malloc(sizeof(int)*INITSIZE);ps->length = 0;ps->listsize = INITSIZE;}//判满static bool IsFull(PDSeqList ps){return ps->length == ps->listsize;}//扩容static void Inc(PDSeqList ps){ps->elem = (int *)realloc(ps->elem,sizeof(int)*2*ps->listsize);ps->listsize *= 2;}//插入数据bool Insert(PDSeqList ps,int pos,int val){if(pos < 0 || pos > ps->listsize){return false;}if(IsFull(ps)){Inc(ps);//如果满了就扩容}for(int i = ps->length-1;i >= pos;i--){ps->elem[i+1] = ps->elem[i];}ps->elem[pos] = val;ps->length++;return true;}//逆置void Reverse(PDSeqList ps){assert(ps != NULL);if(ps == NULL){return ;}int tmp;for(int i = 0;i < ps->length/2;i++){tmp = ps->elem[i];ps->elem[i] = ps->elem[ps->length-1-i];ps->elem[ps->length-1-i] = tmp;}}//打印void Show(PDSeqList ps){for(int i = 0;i < ps->length;i++){printf("%d ",ps->elem[i]);}printf("\n");}int main(){DSeqList ds;InitSeqList(&ds);for(int i=0;i<15;i++){Insert(&ds,i,i);}Show(&ds);Reverse(&ds);Show(&ds);return 0;}
阅读全文
0 0
- 顺序表的逆置
- 顺序表的就地逆置
- 【应用】顺序表的就地逆置
- 顺序表的就地逆置
- 顺序表的就地逆置
- 链表,顺序表的逆置
- 数据结构(一)顺序表2:顺序表的就地逆置和顺序表中删除元素值
- 顺序表——顺序表的创建和就地逆置
- 顺序表接地逆置
- 数据结构之线性表---顺序表的逆置
- 实验二、2顺序表的就地逆置
- 顺序表的创建和就地逆置
- 单链表和顺序表的逆置问题
- 线性表的顺序存储------顺序表
- 【顺序表】 c语言的顺序表
- 利用顺序表实现的顺序队列
- 顺序存储的顺序表 C++
- 顺序表的建立(顺序存储)
- JS实现栈结构
- JAVA集合类总结
- 静态路由的配置
- 消息推送之Websocket
- struts2 拦截器
- 顺序表的逆置
- java 枚举类的简单例子
- Mysql命令大全
- 安卓向SD卡存储数据时java.io.FileNotFoundException:(Permission denied)
- 简单版购物车功能实现
- 【奇奇怪怪的bug】谷歌浏览器控制台无法输出
- 回文数
- arc
- Win10+Python+virtualenv 环境配置