c语言数组输入字母进行排序,数据结构的一个题目~谢谢大家帮忙做下。呵呵先从键盘输入26个字母生成无序数组,对数组排序后,再从键盘输入一个字符进行折半查找。用C语言做~~...

本文介绍了一个使用C语言实现的单链表操作示例,包括链表的创建、元素的插入与删除等功能,并展示了完整的代码及运行结果。

#include<stdio.h>/*全局变量及函数提前说明:*/#include<stdlib.h>typedefstructliuyu{chardata;structliuyu*link;}test;liuyu*p,*q,*r,*head;intL;/*元素的个数*/intm=sizeof(test);voidbuild();/*主函数中会被调用的函数应当预先说明*/voiddisplay();intinsert_char(char,char);/*插入一个字母,在第字母Y之前,若无字母则加到末尾*/intdelet_char(char);/*删除元素X,注意保存X的前趋元素指针!*/voidbuild()/*字母链表的生成*/{inti;head=(test*)malloc(m);/*m=sizeof(test);*/p=head;for(i=1;i<L;i++){p->data=i+'a'-1;/*'a'也可用其ASCII码97来表示*/p->link=(test*)malloc(m);/*m=sizeof(test));*/p=p->link;}p->data=i+'a'-1;p->link=NULL;}voiddisplay()/*字母链表的输出*/{p=head;while(p->link!=NULL){printf("%c",p->data);p=p->link;}printf("%c\n",p->data);}intinsert_char(charX,charY)/*插入一个字母X在某个字母Y之前,若找不到Y字母则加到末尾*/{p=head;r=(test*)malloc(m);r->data=X;if(head->data==Y){head=r;r->link=p;}else{while((p->data!=Y)&&(p->link!=NULL)){q=p;p=p->link;}if(p->data==Y){q->link=r;r->link=p;}else{p->link=r;r->link=NULL;}}L++;return(0);}intdelet_char(charX)/*删除元素X,注意保存X的前趋元素指针!*/{p=head;if(head->data==X){head=head->link;free(p);}else{while((p->data!=X)&&(p->link!=NULL)){q=p;p=p->link;}if(p->data==X){q->link=p->link;free(p);}elsereturn(-1);}L--;return(0);}voidmain(void)/*字母线性表的生成和输出*/{L=26;build();display();printf("insertreturnvalue=%d\n",insert_char('L','W'));display();printf("deletereturnvalue=%d\n",delet_char('z'));display();}附:屏幕上显示的执行结果是:abcdefghijklmnopqrstuvwxyzinsertreturnvalue=0abcd9efghijklmnopqrstuvwxyzLdeletereturnvalue=0abcdefghijklmnopqrstuvwxyL

阅读全文 >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值