【問題描述】用鏈表實(shí)現(xiàn)對候選人的得票進(jìn)行統(tǒng)計(jì)。函數(shù)Statistic的輸入?yún)?shù):head指向鏈?zhǔn)祝琻ame存放候選人的姓名。該函數(shù)的功能為:若在鏈表的結(jié)點(diǎn)上找到name,則將姓名為name的結(jié)點(diǎn)上得得票數(shù)加1;否則新建一個(gè)結(jié)點(diǎn),初始化其姓名和的票數(shù),并將新結(jié)點(diǎn)插入鏈尾。最后返回鏈表的首指針。
【輸入形式】依次輸入候選人姓名,姓名之間以空格為間隔符。輸入0表示結(jié)束輸入。
【輸出形式】姓名:票數(shù)
【樣例輸入】q w e r q e e 0
【樣例輸出】
q:2
w:1
e:3
r:1
我的代碼
struct Node
{
char name[12];
int count;
Node *next;
};
Node Statistic(Node head, char *name)
{
Node *p1 = head;
Node *p2=head;
if (head == 0)
{
head = new Node;
strcpy(head->name, name);
head->count = 1;
head->next = 0;
}
else
{
while (p1)
{
if (strcmp(p1->name, name) == 0)
{
p1->count++;
break;
}
else
{
p2 = p1;
p1 = p1->next;
}
}
if (p1 = NULL)
{
p1 = new Node;
strcpy(p1->name, name);
p1->count = 1;
p1->next = 0;
p2->next = p1;
}
}
return head;
}
void List(Node *head)
{
while (head)
{
printf("%s:%d\n", head->name, head->count);
head = head->next;
}
}
void Free(Node *head)
{
Node *p;
while (head) {
p = head;
head = head->next;
delete p;
}
}
void main()
{
Node *head = 0;
char name[12];
scanf("%s", &name);
while (strcmp(name, "0") != 0)
{
head = Statistic(head, name);
scanf("%s", &name);
}
List(head);
Free(head);
system("pause");
}
各位大大 為什么我的代碼只能輸入第一個(gè)人的票數(shù)呢 哪里錯(cuò)了?請幫我看一下 謝謝各位?。。。?/p>
#include<iostream>
#include<string.h>
#include<stdlib.h>
struct Node
{
char name[12];
int count;
Node *next;
};
Node *Statistic(Node *head, char *name) // 這里返回頭指針,參數(shù)也是頭指針
{
Node *p1 = head;
Node *p2=head;
if (head == 0)
{
head = new Node;
strcpy(head->name, name);
head->count = 1;
head->next = 0;
}
else
{
while (p1)
{
if (strcmp(p1->name, name) == 0)
{
p1->count++;
break;
}
else
{
p2 = p1;
p1 = p1->next;
}
}
if (p1 == NULL) // 這里你少了一個(gè)等號
{
p1 = new Node;
strcpy(p1->name, name);
p1->count = 1;
p1->next = 0;
p2->next = p1;
}
}
return head;
}
void List(Node *head)
{
while (head)
{
printf("%s:%d\n", head->name, head->count);
head = head->next;
}
}
void Free(Node *head)
{
Node *p;
while (head) {
p = head;
head = head->next;
delete p;
}
}
int main()
{
Node *head = 0;
char name[12];
scanf("%s", name); // 數(shù)組名本來就是首地址,不需要再加&符號
while (strcmp(name, "0") != 0)
{
head = Statistic(head, name);
scanf("%s", name);
}
List(head);
Free(head);
system("pause");
return 0;
}北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。