链表的数字实现

来源:互联网 发布:黄岩法院淘宝拍卖网 编辑:程序博客网 时间: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
原创粉丝点击