线性表实践-选票算法


/*
选票系统,输入每个候选人的得票结果(采用单链表存放选票,候选人编号依次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");
}

线性表实践-选票算法

时间: 2024-10-23 09:20:23

线性表实践-选票算法的相关文章

【线性表基础】基于线性表的简单算法【Java版】

本文描述了基于线性表的简单算法及其代码[Java实现] 1-1 删除单链表中所有重复元素 // Example 1-1 删除单链表中所有重复元素 private static void removeRepeat(LinkList L) { Node node = L.head.next; // 首结点 while (node != null) // 一重循环,遍历L中的每一个元素 { // Object data=p.data; Node p = node; // q结点的前驱 Node q =

数据结构——线性表的一些算法

1.已知线性表(a0,a1,a2,….an)按顺序存储,且每个元素都是均不相等的整数,设计把所有的比a0大的数移到其右边,把所有比a0小的数移到其左边的算法.要求:时间最少,辅助空间最少. 解题思路:其实这就是一趟快速排序,a0到位,比它小的交换到低端,比它大的交换到高端. void move(SqList L) { int i=0,j=L.length-1; int key=L.elem[0]; while (i<j) { while (i<j &&L.elem[j]>

数据结构读书笔记----------第二章 线性表

2.1 线性表的定义 线性结构的特点是数据元素之间是一种线性关系,在一个线性表中,数据元素的类型是相同的,或者说线性表是由同一类型的数据元素构成的线性结构.综上所诉:线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列. 2.2 线性表的顺序存储以及运算实现 //线性顺序存储的定义 #define Maxsize 100 typedef int DataType; typedef struct { DataType data[Maxsize]; int last; //用来记录线性表中最

线性表之栈

栈的定义: 一种只能在一端进行插入或删除操作的线性表被称为栈,其中允许删除或插入的一端为栈顶,另一端为栈底,栈底固定不变: 栈的特点:先进后出,例如弹夹,先装的子弹最后才能出: 按照存储结构可以分为两种栈: 顺序栈 链式栈 栈的结构体定义: 顺序栈: //顺序栈的结构体定义 typedef struct { int data[MaxSize]; //栈顶指针 int top; }SqStack; 链式栈: //链栈结构体定义 typedef struct LNode { int data; st

数据结构与算法之线性表

前言 上一篇<数据结构和算法之时间复杂度和空间复杂度>中介绍了时间复杂度的概念和常见的时间复杂度,并分别举例子进行了一一说明.这一篇主要介绍线性表. 线性表属于数据结构中逻辑结构中的线性结构.回忆一下,数据结构分为物理结构和逻辑结构,逻辑结构分为线性结构.几何结构.树形结构和图形结构四大结构.其中,线性表就属于线性结构.剩余的三大逻辑结构今后会一一介绍. 线性表 基本概念 线性表(List):由零个或多个数据元素组成的有限序列. 注意: 1.线性表是一个序列. 2.0个元素构成的线性表是空表.

再回首,数据结构——线性表、链表上的常见算法

最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会. 希望这些能提供给初学者一些参考. //1.编写算法实现线性表就地逆置的操作 void InverseList (SeqList l) { for (i = 0; i <= (l.length-1)/2; i++) { l.elem[i] <-> l.elem[l.length-1-i]; } } //2.从顺序表中删除自第i个元素开始的k个元素 void DeleteList(SeqList l, int

线性表算法-插入

线性表算法-插入

线性表算法-删除

线性表算法-删除

线性表算法-合并

线性表算法-合并