今日学习主要集中在写题上,学习和巩固搜索和链表知识。
9:10-12:30
写链表题组(没写出来)+看回溯的知识点。
14:10-19:00
20:10-21:10
写了一道搜索题+一道链表(写错了。。。)
最开始的思路是使用所有小于输入的自然数(n)的自然数相加等于这个自然数,敲过代码后发现处理大于这个自然数时有问题,故改变思路,用输入的自然数(n)减去小于它的自然数,结束条件为c=0;代码如下:
#includeint n,c; int a[1000]={1};//从自然数1开始 void f1(int m) { for(int j=1;j 第二题:
死磕了一下,当时的想法是先将输入的数据排好序,再将他们插入链表中,代码可以实现,但是提交时AC0%,重新写的思路是将这些数据先插入链表,再进行排序(这应该才是题目要求,最开始想的太简单了) 这是AC0%的代码
#include#include struct node { int data; struct node*link; }; void sort(int a[],int m,int left,int right)//快排 { int i=left,j=right,temp; int t=a[left]; if(i>j) return; while(i =t) i++; if(i link=NULL; return headnode; } struct node*creatnode(int data)//创建一个结点 { struct node*newnode = (struct node*)malloc(sizeof(struct node)); newnode->data=data; newnode->link=NULL; return newnode; } void printList(struct node*headnode) { struct node*pmove = headnode->link; while(pmove) { printf("%d",pmove->data); pmove=pmove->link; printf(" "); } } void insertNodeByHead(struct node*headnode,int data)//头插法 { struct node*newnode=creatnode(data); newnode->link=headnode->link; headnode->link=newnode; } int main () { int m,i,a[100],left,right; scanf("%d",&m); left=0; right=m; for(i=1;i<=m;i++) { scanf("%d",&a[i]); } sort(a,m,left,right);//调用函数 struct node*List=creatList(); for(i=0;i 这个代码提交不过去!!
第二次写的代码还有的问题,还在修改。



