c语言 里统计各类型字符,统计各种类型字符的个数

#include

#include

#include

#define null 0

struct node/* The struct for the information of a student. */

{

int num;

char name[8];

float score;

struct node *next;

};

typedef struct node node;

node *findnum(node *head, int snum) /* Finding the needed num from the database*/

{

node *t;

t = head->next;

while(t&&(t->num != snum))

t = t->next;

return t;

}

node *findname(node *head, char s[]) /* Finding the needed name from the database*/

{

node *t;

t = head->next;

while(t&&strcmp(t->name, s))

t = t->next;

return t;

}

void findnumout(node *head, int snum)/*Find the record according to num and print it out*/

{

node *t;

int sign = 1;

t = head->next;

puts("\nFinding:");

while(t)

{

if(t->num == snum)

{

printf("The student you want to find:  num:%d, name:%s, score:%f\n", t->num, t->name, t->score);

sign = 0;

}

t = t->next;

}

if(sign)

puts("It is wrong!Not find!\n");

}

void findnameout(node *head, char s[])/*Find the record according to name and print it out*/

{

node *t;int sign = 1;

t = head->next;

puts("\nNow it is finding:");

while(t)

{

if(!strcmp(t->name, s))

{

printf("The student you want to find:  num:%d, name:%s, score:%f\n", t->num, t->name, t->score);

sign = 0;

}

t = t->next;

}

if(sign)

puts("It is wrong!Not find!\n");

}

node *findp(node *head, node *sp)

{

node *t;

t = head;

while(t&&t->next != sp)

t = t->next;

return t;

}

node *creatnode()   /* Creating a database .It is a linked-list with a header */

{

node *head, *t, *p;char c;/* When the "name" received comes to "0", the creation is over.*/

head = (node*)malloc(sizeof(node));

head->next = null;

t = head;

p = (node*)malloc(sizeof(node));

p->next = null;

puts("Input the num:");

scanf("%d", &p->num);

puts("Input the name:(within 8 words)");

scanf("%s", p->name);c = getchar();

puts("Input the score:");

scanf("%f", &p->score);

while(p->name[0] != '0')/*The "name" equal to "0" stands for the creation-finished sign.*/

{

t->next = p;p->next = null;

t = t->next;

p = (node*)malloc(sizeof(node));

puts("Input the num:");

scanf("%d", &p->num);

puts("Input the name:(within 8 words)");

scanf("%s", p->name);c = getchar();

puts("Input the score:");

scanf("%f", &p->score);

}

return head;

}

void insert(node *head, int snum)/* Inserting a record into the database. */

{

node *p, *t;char c; /* The function inserts the record into the database according to "num". */

p = (node*)malloc(sizeof(node));

p->next = null;

t = findnum(head, snum); /* Find the record whose "num" equals to "snum".*/

puts("Inserting!\n");

puts("Input the num:");

scanf("%d", &p->num);

puts("Input the name:(within 8 words)");

scanf("%s", p->name);c = getchar();

puts("Input the score:");

scanf("%f", &p->score);

if(t)

{

if(t->next != null)

{

p->next = t->next;t->next = p;

}

else

t->next = p;

}

else puts("\nIt is wrong!\n");

}

void deletenode(node *head, int snum)/* Deleting a record from the database. */

{

node *t;                      /*The function deletes the record according to "num". */

t = head;

while(t->next&&(t->next->num != snum))/*Find the previous record of the "snum"-record */

t = t->next;

if(t->next)

t->next = t->next->next;

else puts("\nIt is wrong!\n");

}

void print(node *head)     /* Printing all the records. */

{

node *t;t = head->next;

while(t)

{

printf("The num:%d, name:%s, score:%f\n", t->num, t->name, t->score);t = t->next;

}

free(t);

}

void sortnum(node *head)/*Sort all the nodes using the algorithm of bubble*/

{

node *a, *b;int sign;   /*According to the nums */

while(a)

{

a = head->next;

b = a->next;

sign = 1;

while(b)

{

if(a->num>b->num)

{

findp(head, a)->next = b;a->next = b->next;b->next = a;b = a->next;sign = 0;

}

else {

a = b;b = b->next;

}

}

if(sign)

break;

}

}

void sortscore(node *head)/*Sort all the nodes using the algorithm of bubble*/

{

node *a, *b;int sign;     /*According to the score */

while(a)

{

a = head->next;

b = a->next;

sign = 1;

while(b)

{

if(a->score>b->score)

{

findp(head, a)->next = b;a->next = b->next;b->next = a;b = a->next;sign = 0;

}

else {

a = b;b = b->next;

}

}

if(sign)

break;

}

}

void main()

{

node *head;

head = creatnode();

puts("\nPrevious database is:\n");

print(head);

insert(head, 12);/*Insert a record after the node whose num is 12*/

printf("After the action of inserting, the database is:\n");

print(head);

deletenode(head, 11);/*Delete the record whose num is 11 */

puts("\nHaving been deleted, the database now is:\n");

print(head);

puts("\nTake the action of Sorting according to the num:\n");

sortnum(head);

print(head);

puts("\nTake the action of Sorting according to score:\n");

sortscore(head);

print(head);

findnumout(head, 12);/*Check out the student whose num is 12. */

findnameout(head, "huhl");/*Check out the student whose name is huhl */

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值