查询成绩(要求用链表完成)
Description
知道如何創(chuàng)建鏈表了。
本題繼續(xù)要求用鏈表完成。輸入同學(xué)成成績(jī)后,現(xiàn)在再輸入1個(gè)同學(xué)的姓名,輸出該同學(xué)的成績(jī)。
Input
輸入一些學(xué)生的信息,每個(gè)學(xué)生信息一行,分別為學(xué)號(hào)、姓名和成績(jī),中間用空格隔開(kāi),其中學(xué)號(hào)和成績(jī)均為整數(shù),姓名為不超過(guò)15個(gè)僅包含大小寫(xiě)字母的字符。
如果輸入的一行是非正整數(shù)時(shí),表示結(jié)束
在成績(jī)結(jié)束后,輸入一行,為一個(gè)同學(xué)的姓名
Output
輸出一個(gè)整數(shù),表示該同學(xué)的成績(jī)
Sample Input
1001 xiangwang 90
1002 xiaoli 85
1003 xiaohong 97
1004 xiaoma 76
-1
xiaoli
Sample Output
85
本題某種程度上說(shuō)很死板,我很確定代碼沒(méi)錯(cuò),但就是超時(shí),而代碼已經(jīng)縮減到我能做到的最少了,如果堅(jiān)持用cin輸入基本就會(huì)超時(shí),只能用scanf。但讓我獲得了一個(gè)很好的知識(shí)點(diǎn),在c++中cin做的操作比scanf要來(lái)的多。
#include<iostream> #include<malloc.h> #include<cstring> using namespace std; struct node {int score;char name[15];struct node *next; };//struct結(jié)構(gòu)體 struct node * Create_Stu_Doc() {struct node *head,*tail,*p;//頭尾和p指針int num,score;char name[15];head = tail =NULL;scanf("%d", &num);while(num > 0) {scanf("%s%d",name,&score);p = (struct node *) malloc(sizeof(node));p->score=score;strcpy(p->name,name);p->next = NULL;if(head==NULL) head=p;//這邊還能再簡(jiǎn)化但代碼更繁瑣,能通過(guò)就不改了else tail->next=p;tail = p;scanf("%d", &num);}return head; }; int main() {struct node *head,*p;char name[15];head=Create_Stu_Doc();scanf("%s",name);for(p=head; p!=NULL; p=p->next) {if(strcmp(p->name,name)==0) {printf("%d",p->score);}}return 0; }總結(jié)
以上是生活随笔為你收集整理的查询成绩(要求用链表完成)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java oauth2登录以及权限_还得
- 下一篇: 虚拟专题:联邦学习 | 联邦学习算法综述