/*
选票系统,输入每个候选人的得票结果(采用单链表存放选票,候选人编号依次123...N,且每张选票只选一人)。
*//*
单链表存放选票,每个节点的data域存放该选票所选的候选人,用一个数组a统计得票结果。
*/typedef int Elemtype;
typedef struct linknode
{
Elemtype data;
struct linknode *next;
}Lnode;Lnode *create()
{
Elemtype d;
Lnode h=NULL,*s,*t;
int i=1;
printf("创建一个单链表\n");
while(1)
{
printf("输入第%d节点data域值:",i);
scanf("%d",&d);
if(d==0)
break;
if(i==1)
{
h=(Lnode*)malloc(sizeof(Lnode));
h->data=d;
h->next=NULL;
t=h;
}
else
{
s=(Lnode*)malloc(sizeof(Lnode));
s->data=d;
s->next=NULL;
t->next=s;
t=s;
}
i++;
}
return h;
}void sat(Lnode* h,int a[])
{
Lnode*p=h;
while(p!=NULL)
{
a[p->data]++;
p=p->next;
}
}void main()
{
int a[N+1];
for(i=0;i<N;i++)
a[i]=0;
Lnode*head;
head=create();
sat(head,a);
printf("候选人:");
for(i=1;i<N;i++)
printf("%3d",i);
printf("得票数:");
for(i=1;i<=N;i++)
printf("%3d",a[i]);
printf("\n");
}
线性表实践-选票算法