心之穹 心之穹
关注数: 23 粉丝数: 346 发帖数: 2,382 关注贴吧数: 53
为我解释一下,代码的意思。谢谢了。 #include <stdio.h> #include <malloc.h> #define LEN sizeof(struct student) struct student {long num; intscore; struct student *next; }; struct student lista,listb; int n,sum=0; int main() {struct student *creat(void); struct student *insert(struct student *,struct student *); voidprint(struct student *); struct student *ahead,*bhead,*abh; printf("input list a:\n"); ahead=creat(); sum=sum+n; printf("input list b:\n"); bhead=creat(); sum=sum+n; abh=insert(ahead,bhead); print(abh); return 0; } struct student *creat(void) //建立链表函数 {struct student *p1,*p2,*head; n=0; p1=p2=(struct student *)malloc(LEN); printf("input number & scores of student:\n"); printf("if number is 0,stop inputing.\n"); scanf("%ld,%d",&p1->num,&p1->score); head=NULL; while(p1->num !=0) {n=n+1; if (n==1) head=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(LEN); scanf("%ld,%d",&p1->num,&p1->score); } p2->next=NULL; return(head); } struct student *insert(struct student*ah,struct student *bh) //插入函数 {struct student * pa1,* pa2,* pb1,* pb2; pa2=pa1=ah; pb2=pb1=bh; //这个do、while循环里面是什么意思,看不懂。代码题目是合并两个链表,并按学号升序排列 do {while((pb1->num>pa1->num) && (pa1->next !=NULL)) {pa2=pa1; pa1=pa1->next; } if (pb1->num<= pa1->num) {if (ah==pa1) ah=pb1; else pa2->next=pb1; pb1=pb1->next; pb2->next=pa1; pa2=pb2; pb2=pb1; } }while((pa1->next!=NULL) || (pa1==NULL && pb1!=NULL)); if ((pb1!=NULL) && (pb1->num>pa1->num) &&(pa1->next==NULL)) pa1->next=pb1; return(ah); }
问个题,大佬(&小吧主)请进,看看我的del函数哪里有问题, 其他的地方我都测试过了,没问题,只要加上del函数就要出错(输入完要删除的num,回车,程序就停止) #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { char name[10]; char sex[4]; int age; long num; float score; struct Student *next; }List; int n; struct Student *creat()//创建动态链表并输入数据 { struct Student *p1,*p2,*head; p1=p2=head=(struct Student *)malloc(LEN); n=1; scanf("%s %s %d %ld %f",p1->name,p1->sex,&p1->age,&p1->num,&p1->score); while(p1->num!=0) { p1=(struct Student *)malloc(LEN); scanf("%s %s %d %ld %f",p1->name,p1->sex,&p1->age,&p1->num,&p1->score); if(p1->num!=0) { p2->next=p1; p2=p1; n++; } } if(n==1) { head->next=NULL; } else { p2->next=NULL; } return head; } struct Student *print(struct Student *head) { struct Student *pt; pt=head; int i; for(i=1;i<=n;i++) { printf("\n%s %s %d %ld %f\n",pt->name,pt->sex,pt->age,pt->num,pt->score); pt=pt->next; } } struct Student *del(struct Student *head,long number) { struct Student *p1,*p2; p1=p2=head; int i,find=0; long cut=number; for(i=1;i<=n;i++) { if(head->num == cut)//表头是要删除的元素 { head=head->next; find=1; } else p1=p1->next;//表头不是要删除的元素 if(p1->num == cut) { p2->next=p1->next; p1=p1->next; find=1; } else { p2=p1; p1=p1->next; } } if(find==0) { printf("没有发现该序号!"); } else { printf("该序号已被删除!"); n=n-1; } return head; } int main(void) { struct Student *pt,*ps; long num; pt=creat(); printf("\n地址值:%d\n",&pt);//创建一个链表,并返回头指针--head //ps=sort(pt);//pt=head print(pt); printf("\n地址值:%d\n",&pt); printf("\n你好!\n"); printf("\n请输入要删除的序号num:"); scanf("%ld",&num); pt=del(pt,num); print(pt); return 0; }
帮我看看呗,主题偏爱的随笔,我是新手啊,喷可以,给点意见吧。 偏爱,这世上无处不在,有褒有贬。有的人对人存在偏爱,男的偏爱漂亮的;女的偏爱帅气的。也有人对自然景物的偏爱,如陶渊明独爱菊,“采菊东篱下,悠然见南山”;或周敦颐独喜莲,“予独爱莲之出淤泥而不染,濯清涟而不妖。”要说昨日前的我偏爱什么?我很难答上来。我小时候爱画动漫中的人物,尤其爱《七龙珠》,我以为我偏爱它。在初中毕业的暑假,我专门买了一本大的画集本,想在这个暑假给它充实,想和贴吧的大神一样能发表一篇被加精的帖子,楼下的字里行间都无不流露出羡慕的意思。然而却在我作画寥寥几页后,被游戏带走了。我偏爱游戏?听起来很低俗,可至少也是爱的一种啊,既然是“偏”,又管他被贴上什么标签呢。可我也错了,我曾为游戏在学业紧张的时候半夜去上通宵,也曾整个周末都泡在网吧里与世隔绝。我时常因游戏欣喜若狂,也时常因游戏而恼羞成怒。我想这不是对一件事物的爱,所该有的态度。就在昨日,我的快递——Kindle到了,也恰逢在昨日,这一年都下不了十场雨的银川,正巧来了场大暴雨。因这无聊的暑假,我冒雨去了仓库取回我的快递。并就在当天晚上,我用Kindle看完了第一本书——《钢铁是怎样炼成的》。这是我之前不敢想象的,哪怕通宵打游戏,我也会在后半夜躺在椅子上睡着。可阅读就像除颤器一样,在这个夜晚时刻抨击着我的心脏,刺激着我的神经。因此,我现在敢肯定的说我的偏爱——阅读。哪怕他会像我过往的爱好一样被其他事物替代,没有关系。人生不就是如此,在旧事物与新事物的交替中度过,在一次次的考验中坚定自己的认知。等到回忆往事时,不因虚度年华而悔恨,不因碌碌无为而羞愧。这,就是完美的一生。
首页 1 2 3 4 5 6 下一页