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

被折叠的 条评论
为什么被折叠?



