链表的数字实现
来源:互联网 发布:黄岩法院淘宝拍卖网 编辑:程序博客网 时间:2024/05/02 04:23
# include <stdio.h># include <malloc.h># include <stdlib.h>typedef struct ARR{int * pbase;//数据域 int len;//数组长度 int cnt;//有效个数 }Arr,*parr;void init(parr arr,int lengh);//创建数组 bool empty(parr arr);//判空 bool full(parr arr);//判满 void show(parr arr);//输出 bool append(parr arr,int val);//追加 bool insert(parr arr,int pos,int val);//插入 bool deletearr(parr arr,int pos,int *val);//删除 void inversion(parr arr);//倒置 void sortarr(parr arr);//排序 int main (void){parr arr;arr = (parr)malloc(sizeof(Arr));//为指针分配空间 int val;init(arr,6);show(arr);append(arr,1); append(arr,2); append(arr,3); append(arr,4); if (deletearr(arr,1,&val)){printf ("删除成功\n");printf ("您删除的元素是:%d\n",val);}elseprintf ("删除失败");show(arr);inversion(arr);printf ("倒置后的数字内容是:\n");show(arr);sortarr(arr);show(arr);return 0;}void init(parr arr,int lengh){arr->pbase = (int *)malloc(sizeof(int)*lengh);//为数组分配空间 if (arr->pbase == NULL)exit(-1);arr->len = lengh;arr->cnt = 0;return;}bool empty(parr arr){if (0 == arr->cnt)return true;elsereturn false;}bool full(parr arr){if (arr->cnt == arr->len)return true;elsereturn false;}void show(parr arr){int i;if (empty(arr))printf ("数组为空\n");else{for (i=0;i<arr->cnt;++i)printf ("%d ",arr->pbase[i]);printf ("\n");}}bool append(parr arr,int val){if (full(arr))return false;else{arr->pbase[arr->cnt] = val;++(arr->cnt);return true;}}bool insert(parr arr,int pos,int val){int i;if (full(arr))return false;if (pos<1 || pos>arr->cnt+1)return false;for (i=arr->cnt+1;i >= pos-1;--i)//指定位置之后的元素后移一位 {arr->pbase[i+1] = arr->pbase[i];}arr->pbase[pos-1] = val;++arr->cnt;return true;}bool deletearr(parr arr,int pos,int *val){int i;if (empty(arr))return false;if (pos<1 || pos>arr->cnt)return false;*val = arr->pbase[pos-1];for (i=pos;i<arr->cnt;++i)//指定位置之后的元素前移一位 arr->pbase[i-1] = arr->pbase[i];--arr->cnt;return true;}void inversion(parr arr){int i=0;int j = arr->cnt-1;int t;while(i<j){t = arr->pbase[i];arr->pbase[i] = arr->pbase[j];arr->pbase[j] = t;++i;--j;}return;}void sortarr(parr arr){int i,j,t;for (i=0;i<arr->cnt-1;++i){for (j=i+1;j<arr->cnt;++j){if (arr->pbase[i] >= arr->pbase[j]){t = arr->pbase[i];arr->pbase[i] = arr->pbase[j];arr->pbase[j] = t;}}}}
0 0
- 链表的数字实现
- 数字时钟的实现
- 猜数字的实现
- 链表实现两个数字相加
- 回溯实现数字的排列组合
- 一个数字排序的实现
- 猜数字游戏的实现
- 数字验证码的实现
- 数字转换字符串的实现
- 猜数字游戏的实现
- 猜数字游戏的实现
- ios数字钟的实现
- 埃及数字的代码实现
- 实现数字逆序的方法
- MySQL 用数字辅助表实现复杂的列变行
- MySQL 用数字辅助表实现复杂的列变行
- C++实现递归实现数字的组合
- 编程实现英文数字到中文大写数字的转换
- 设计模式--单例模式(一)懒汉式和饿汉式
- Qt之等待提示框(QMovie)
- HDU2149——Public Sale(Bash Game巴什博奕)
- linux 进程
- 如何简单的判断机器的大小端字节序
- 链表的数字实现
- OpenCV RGB2LAB执行效率测试
- mongoDB——router server
- 删除链表中重复元素
- iOS开发之 CollectionViewCell 无法加载
- 杭电ACM1001
- 银行那些事儿--会计科目(1)
- SQL Injection
- HDOJ 1070 Milk(水题,考英文的)