WORD格式可编辑 for(j=0;j
if(j==i-1) //匹配 {
for(k=l->last;k>j;k--) //将所选插入位置之后原素后移 {
l->data[k]=l->data[k-1]; }
l->data[j]=x; //把x赋值给所选位置 break; } } }
l->last=l->last+1; //数值长度加一 return 1; }
return 0; //无效位置 }
main() {
list b; int x,i; b.last=10;
for(i=0;i printf(\请输入x的值:\ scanf(\ if(insert(&b,66,x)!=0) { for(i=0;i printf(\ } else printf(\} //时间复杂度T(n)=O(n); 4、 专业知识分享 WORD格式可编辑 #include typedef struct{ int data[MAXSIZE]; int last; }list; /*编写函数,实现在顺序表中将所有偶数排在所有奇数前面,编写主函数验证此算法,并分析算法的时间复杂度 */ void fun(list *l) { //这个代码有点晦涩,但空间时间复杂度是鸡儿低 int i,ou=0,temp; //i计数,ou代表偶数个数 for(i=0;i if(l->data[i]%2==0) //判断是不是偶数,如果是偶数的话和当前第ou个位置的原素交换位置 { temp=l->data[ou]; l->data[ou]=l->data[i]; l->data[i]=temp; ou+=1; //偶数个数加一 } } printf(\当前数组中偶数有%d个,奇数有%d个:\\n\} main() { list b; int i=0,m=0; b.last=10; printf(\请输入数组元素的值:\\n\ for(i=0;i printf(\ scanf(\ } fun(&b); for(i=0;i 专业知识分享 WORD格式可编辑 //时间复杂度为T(n)=O(n); 四、实验报告要求 1、撰写实验报告; 2、对实验中出现的问题和结果进行总结。 专业知识分享 WORD格式可编辑 实验二 链表的实现和应用 一、实验目的 1、掌握链表的定义; 2、掌握链表的基本操作,如查找、插入、删除、排序等。 二、实验内容 1、单链表的创建 2、单链表的查找 3、单链表的排序 4、单链表的删除 5、链表的应用--约瑟夫环问题 三、实验提示 1、//创建单链表,要求:结点个数为n个,每个节点数据域的值必须小于m。编辑主函数验证之。 #include struct aa *next; } NODE; NODE *Creatlink(int n, int m) { int i; NODE *tou,*p; //tou 头结点 tou=(NODE*)malloc(sizeof(NODE)); //创建并初始化头结点 tou->next=NULL; tou->data=n; printf(\请输入%d个小鱼%d的数,中间用空格隔开:\\n\ for(i=0;i p=(NODE*)malloc(sizeof(NODE)); scanf(\ if(p->data>=m) { printf(\输入的第%d个数据大于%d,GG\\n\ exit(0); //程序强制中断,好像是在头文件stdlib.h里 } p->next=tou->next; tou->next=p; } return tou; } 专业知识分享 WORD格式可编辑 outlink(NODE *h) { NODE *p; p=h->next; printf(\ while(p) { printf(\ p=p->next; } printf(\} main() { NODE *head; head=Creatlink(8,22); outlink(head); } 2、//查找值为ch的节点在链表中是否出现,如果存在,返回在链表中位序,如果不存在返回0 #include struct list *next; } SLIST; SLIST *creatlist(char *); void outlist(SLIST *); int fun( SLIST *h, char ch) { int i; SLIST *p; p=h->next; //p赋值为寿元节点 for(i=0;i if(p->data==ch) return i+1; 专业知识分享