C语言写简单的单项链表

举报
心跳包 发表于 2021/11/13 00:51:43 2021/11/13
【摘要】 /* 基本数据结构的定义以及函数的声明 */typedef int ElemType; typedef struct Node{ ElemType elem; struct Node* next;} Node, * NodePtr, **ForwardList; NodePtr createNode(ElemType x);...

  
  1. /* 基本数据结构的定义以及函数的声明 */
  2. typedef int ElemType;
  3. typedef struct Node
  4. {
  5. ElemType elem;
  6. struct Node* next;
  7. } Node, * NodePtr, **ForwardList;
  8. NodePtr createNode(ElemType x);
  9. void showList(ForwardList lst);
  10. void destroyList(ForwardList lst);
  11. // 创建元素为x的节点并插入到节点where后面
  12. // 若where为NULL, 则插入到链表lst的首部作为首节点
  13. // 返回新节点的指针
  14. NodePtr insertAfterNode(NodePtr where, ElemType x,
  15. ForwardList lst);

  
  1. /* 链表相关函数的具体实现 */
  2. NodePtr createNode(ElemType x)
  3. {
  4. NodePtr pNode = (NodePtr) malloc(sizeof(Node));
  5. if (pNode == NULL) {
  6. perror("malloc");
  7. exit(1);
  8. }
  9. pNode->elem = x;
  10. pNode->next = NULL;
  11. return pNode;
  12. }
  13. NodePtr insertAfterNode(const NodePtr where,
  14. ElemType x, ForwardList lst)
  15. {
  16. NodePtr pNode = createNode(x);
  17. if (where == NULL) {
  18. *lst = pNode;
  19. } else {
  20. pNode->next = where->next;
  21. where->next = pNode;
  22. }
  23. return pNode;
  24. }
  25. void showList(ForwardList lst)
  26. {
  27. printf("显示链表: ");
  28. NodePtr curr = *lst;
  29. while (curr->next != NULL) {
  30. printf("%d->", curr->elem);
  31. curr = curr->next;
  32. }
  33. printf("%d\n", curr->elem);
  34. }
  35. void destroyList(ForwardList lst)
  36. {
  37. printf("销毁链表: ");
  38. NodePtr curr = *lst;
  39. while (curr != NULL) {
  40. NodePtr next = curr->next;
  41. printf("%d ", curr->elem);
  42. free(curr);
  43. curr = next;
  44. }
  45. printf("\n");
  46. }

 

文章来源: xintiaobao.blog.csdn.net,作者:心跳包,版权归原作者所有,如需转载,请联系作者。

原文链接:xintiaobao.blog.csdn.net/article/details/106342902

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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