摘要: 将串集合重新按顺序排列。将串读入一个缓冲器,这个缓冲器足以容纳所有的串,设置指针来指向数组中的每个串,然后重排这些指针,将最小串的指针放在数组的首位,将次小串的指针放在数组的第二位,依次类推 。#include<stdio.h>#include<stdlib.h>#include<string.h>#defineNmax1000#defineMmax10000charbuf[Mmax];intM=0;intcompare(void*i,void*j){returnstrcmp(*(char**)i,*(char**)j);}intmain(){inti,N; 阅读全文
posted @ 2011-05-10 22:53 iwuyudong 阅读(153) 评论(0) 推荐(0) 编辑
摘要: int**malloc2d(intr,intc){inti;int**t=malloc(r*sizeof(int*));for(i=0;i<r;i++)t[i]=malloc(c*sizeof(int));returnt;}int**a=malloc2d(M,N)ps:矩阵相乘for(i=0;i<N;i++)for(j=0;j<N;j++)for(k=0,c[i][j]=0.0;k<N;k++) c[i][j]+=a[i][k]*b[k][j]; 阅读全文
posted @ 2011-05-10 22:18 iwuyudong 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。试编写实现这个双向栈tws的三个操作:初始化inistack(tws)、入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈.C code:#include<stdio.h>#include<stdlib.h>#defineOK1#defineOVERFLOW-1#defineERROR1typedefintStatus;typedefstruct{int*base[2];int*top[2];}BDSta 阅读全文
posted @ 2011-05-05 22:06 iwuyudong 阅读(953) 评论(0) 推荐(0) 编辑
摘要: 已知A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素。试对顺序表编写实现上述操作的算法.(注意:题中没有特别指明同一表中的元素值各不相同)。C code:#include<stdio.h>#include<stdlib.h>#defineLIST_INIT_SIZE10#defineLIST_INCREMENT2#defineERROR0#defineOK1#defineOVERFLOW-1#defineTRUE1typedefintStatus;structSqList{int*elem;intlength;intl 阅读全文
posted @ 2011-05-03 23:46 iwuyudong 阅读(846) 评论(0) 推荐(1) 编辑
摘要: 假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表C,其元素为A和B中元素的交集,且表C中的元素有依值递增有序排列。试对顺序表编写求C的算法。C code:#include<stdio.h>#include<stdlib.h>#defineLIST_INIT_SIZE10#defineLIST_INCREMENT2#defineERROR0#defineOK1#defineOVERFLOW-1#defineTRUE1typedefintStatus;structSqList{int*elem;intl 阅读全文
posted @ 2011-04-28 23:48 iwuyudong 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 设线性表A=(a1,a2……,am),B=(b1,b2……,bn),试写一个按下列规则合并A,B为线性表C的算法,即使得C=(a1,b1,……am,bm,……bn) 当m<=n时;C=(a1,b1,……an,bn,……am) 当m>n时;C code:#include<stdio.h>#include<stdlib.h>#defineLIST_INIT_SIZE10#defineLIST_INCREMENT2#defineERROR0#defineOK1#defineOVERFLOW-1#defineTRUE1typedefintStatus;structS 阅读全文
posted @ 2011-04-28 01:42 iwuyudong 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。试写一算法将这两个链表连接在一起,假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。C code:#include<stdio.h>#include<stdlib.h>#defineLIST_INIT_SIZE10#defineLIST_INCREMENT2#defineERROR0#defineOK1#defineOVERFLOW-1#defineTRUE1typedefintStatus;structLNode{intdata;LNode*next;};ty 阅读全文
posted @ 2011-04-27 23:37 iwuyudong 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 1、试写一算法在带头结点的单链表结构上实现线性表操作Locate(L,x)2、试写一算法在带头结点的单链表结构上实现线性表操作Length(L)C code:#include<stdio.h>#include<stdlib.h>#defineERROR0#defineOK1#defineOVERFLOW-1#defineTRUE1typedefintStatus;structLNode{intdata;LNode*next;};typedefLNode*LinkList;voidInitList(LinkList&L){L=(LinkList)malloc(si 阅读全文
posted @ 2011-04-27 20:59 iwuyudong 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。算法:StatusInsert_Sqlist(SqList&va,intx){inti;if(va.length+1>va.listsize)returnERROR;va.length++;for(i=va.length-1;va.elem[i]>x&&i>=0;i--)va.elem[i+1]=va.elem[i];va.elem[i+1]=x;returnOK;}C code:#include<stdio.h>#include<stdl 阅读全文
posted @ 2011-04-27 17:57 iwuyudong 阅读(423) 评论(0) 推荐(0) 编辑
摘要: //串的堆分配存储structHString{char*ch;//若是非空串,则按串长分配存储区,否则ch为NULLintlength;//串长度};//串采用堆分配存储结构的基本操作(15个)//包括算法4.1、4.4StatusStrAssign(HString&T,char*chars){//生成一个其值等于串常量chars的串Tinti,j;if(T.ch)free(T.ch);//释放T原有空间i=strlen(chars);//求chars的长度iif(!i){//chars的长度为0T.ch=NULL;T.length=0;}else{//chars的长度不为0T.ch= 阅读全文
posted @ 2011-04-17 19:44 iwuyudong 阅读(2303) 评论(0) 推荐(0) 编辑