058.双链表

举报
C语言与CPP编程 发表于 2022/04/30 23:27:32 2022/04/30
【摘要】 #include <stdio.h>#define N 10typedef struct node{ char name[20]; struct node *llink,*rlink;}stud;/*双链表的结构定义*/ /*双链表的创建*/stud * creat(int n){ stud *p,*h,*...

  
  1. #include <stdio.h>
  2. #define N 10
  3. typedef struct node
  4. {
  5. char name[20];
  6. struct node *llink,*rlink;
  7. }stud;/*双链表的结构定义*/
  8. /*双链表的创建*/
  9. stud * creat(int n)
  10. {
  11. stud *p,*h,*s;
  12. int i;
  13. if((h=(stud *)malloc(sizeof(stud)))==NULL)
  14. {
  15. printf("cannot find space!\n");
  16. exit(0);
  17. }
  18. h->name[0]='\0';
  19. h->llink=NULL;
  20. h->rlink=NULL;
  21. p=h;
  22. for(i=0;i<n;i++)
  23. {
  24. if((s= (stud *) malloc(sizeof(stud)))==NULL)
  25. {
  26. printf("cannot find space!\n");
  27. exit(0);
  28. }
  29. p->rlink=s;
  30. printf("Please input the %d man's name: ",i+1);
  31. scanf("%s",s->name);
  32. s->llink=p;
  33. s->rlink=NULL;
  34. p=s;
  35. }
  36. h->llink=s;
  37. p->rlink=h;
  38. return(h);
  39. }
  40. /*查找*/
  41. stud * search(stud *h,char *x)
  42. {
  43. stud *p;
  44. char *y;
  45. p=h->rlink;
  46. while(p!=h)
  47. {
  48. y=p->name;
  49. if(strcmp(y,x)==0)
  50. return(p);
  51. else p=p->rlink;
  52. }
  53. printf("cannot find data!\n");
  54. }
  55. /*打印输出*/
  56. void print(stud *h)
  57. {
  58. stud *p;
  59. p=h->rlink;
  60. printf("\nNow the double list is:\n");
  61. while(p!=h)
  62. {
  63. printf("%s ",&*(p->name));
  64. p=p->rlink;
  65. }
  66. printf("\n");
  67. }
  68. /*删除*/
  69. void del(stud *p)
  70. {
  71. (p->rlink)->llink=p->llink;
  72. (p->llink)->rlink=p->rlink;
  73. free (p);
  74. }
  75. /*主函数*/
  76. main()
  77. {
  78. int number;
  79. char studname[20];
  80. stud *head,*searchpoint;
  81. number=N;
  82. clrscr();
  83. puts("Please input the size of the list:");
  84. scanf("%d",&number);
  85. head=creat(number);
  86. print(head);
  87. printf("\nPlease input the name which you want to find:\n");
  88. scanf("%s",studname);
  89. searchpoint=search(head,studname);
  90. printf("the name you want to find is:%s\n",*&searchpoint->name);
  91. del(searchpoint);
  92. print(head);
  93. puts("\n Press any key to quit...");
  94. getch();
  95. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124495198

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。