C++链表操作实际应用技巧分享

C++编程语言应用范围广泛,在开发人员眼中,它占据着非常重要的地位。在这里我们可以通过对C++链表操作的相关技巧,来充分了解一下这一语言的应用方式以及他的应用能给我们带来哪些不同的感受。

C++链表操作代码示例:

 
 
 
  1. // linklist.cpp : 定义控制台应用程序的入口点。 
  2. #include "stdafx.h" 
  3. #include "malloc.h" 
  4. #include "stdlib.h" 
  5. #define NULL 0 
  6. #define LEN sizeof(struct student) 
  7. struct student 
  8. long num; 
  9. float score; 
  10. struct student* next; 
  11. }; 
  12. int n; 
  13. struct student* creat() 
  14. struct student *head; 
  15. struct student *p1,*p2; 
  16. n=0; 
  17. p1=p2=(struct student*)malloc(LEN); 
  18. scanf("%ld",&p1->num); 
  19. scanf("%f",&p1->score); 
  20. head=NULL; 
  21. while (p1->num!=0) 
  22. n++; 
  23. if (n==1) 
  24. head=p1; 
  25. else 
  26. p2->next=p1; 
  27. p2=p1; 
  28. p1=(struct student*)malloc(LEN); 
  29. scanf("%ld",&p1->num); 
  30. if (p1->num==0) 
  31. break; 
  32. scanf("%f",&p1->score); 
  33. p2->next=NULL; 
  34. return (head); 
  35. }; 
  36. void print(struct student *head) 
  37. struct student *p; 
  38. printf("\n New,These %d records are:\n",n); 
  39. p=head; 
  40. if (head!=NULL) 
  41. do 
  42. printf("%d %5.1f\n",p->num,p->score); 
  43. pp=p->next; 
  44. }while (p!=NULL); 
  45. struct student* insert(struct student *head,struct student *stud) 
  46. struct student *p0, *p1, *p2; 
  47. p1=head; 
  48. p0=stud; 
  49. if (head==NULL) 
  50. head=p0; 
  51. p0->next=NULL;//insert into head point 
  52. else 
  53. while ((p0->num>p1->num)&&(p1->next!=NULL)) 
  54. p2=p1; //p2 is point to just p1 point to node; 
  55. p1p1=p1->next; 
  56. if (p0->num<=p1->num) 
  57. if (p1==head) 
  58. head=p0;//insert into before first node 
  59. else 
  60. p2->next=p0;//insert into after point p2 
  61. p0->next=p1; 
  62. else 
  63. p1->next=p0; //insert into after last point 
  64. p0->next=NULL; 
  65. n++; 
  66. return(head); 
  67. }; 
  68. struct student* del(struct student *head,long num) 
  69. struct student *p1, *p2; 
  70. if (head==NULL) 
  71. printf("\n list Null!\n"); 
  72. return (head); 
  73. p1=head; 
  74. while (num!=p1->num&&p1->next!=NULL) 
  75. //find num if equal p1->num 
  76. p2=p1; 
  77. p1p1=p1->next; 
  78. if (num==p1->num) 
  79. if (p1==head) 
  80. head=p1->next;//delete head node because num=head.num 
  81. else 
  82. p2->next=p1->next;//delete node. node is not head point 
  83. printf("delete:%ld\n",num); 
  84. n--; 
  85. else 
  86. printf("%ld not been found!\n",num); 
  87. return (head); 
  88. }; 
  89. int _tmain(int argc, _TCHAR* argv[]) 
  90. struct student *head,*end; 
  91. head=creat(); 
  92. print(head); 
  93. struct student insertnode; 
  94. insertnode.num=3; 
  95. insertnode.score=900; 
  96. head=insert(head,&insertnode); 
  97. print(head); 
  98. head=del(head,3); 
  99. print(head); 
  100. return 0; 
  101. }

C++链表操作的相关实现方法就为大家介绍到这里。

网站标题:C++链表操作实际应用技巧分享
链接URL:http://www.shufengxianlan.com/qtweb/news28/353978.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联