链表基础操作+实例[C语言实现]
来源:互联网 发布:前端学到什么水平知乎 编辑:程序博客网 时间:2024/06/05 20:39
<pre name="code" class="cpp">#include<stdio.h>#include<stdlib.h>struct Node{int data;Node *next;};typedef struct Node Node;struct List{Node head;Node *last;};typedef struct List list;void list_init(List *list){list->head.data=0;list->head.next=0;list->last=&list->head;/*链表尾部的指针*last指向链表的头结点head*/ }void list_insert(List *list,int data){Node *new_node=(Node *)malloc(sizeof(Node));new_node->data=data;new_node->next=NULL;list->last->next=new_node;/*链接新节点*/list->last=new_node;/*移动尾指针*/}void list_erase(List *list,int data){/*删除数据等于data的结点*/Node *pre=&list->head;Node *cur=list->head.next; while(cur) { if(cur->data==data) { Node *del=cur; pre->next=cur->next; cur=cur->next; free(del); } else { pre=cur; cur=cur->next; } } list->last=pre;}Node *list_find(List *list,int data){Node *cur=list->head.next;while(cur){if(cur->data==data)return cur;cur=cur->next;}return NULL;/*如果找不到,返回NULL*/}void list_print(List *list){ printf("head");Node *cur=list->head.next;while(cur){printf("->[%d]",cur->data);cur=cur->next;}printf("\n");}void list_destroy(List *list){Node *cur=list->head.next;while(cur){Node *del=cur;cur=cur->next;/*先存下cur的下一个结点地址,然后再释放*/free(del);}list_init(list);/*释放完后要初始化*/}/*for testing*/int main(){List *list;list_init(list);list_insert(list,10);list_insert(list,2);list_insert(list,1);list_insert(list,3);list_print(list);list_erase(list,10);list_print(list);list_insert(list,-99);list_print(list);Node *node=list_find(list,3);printf("node next data=%d\n",node->next->data);list_destroy(list);return 0;}
运行结果:
<img src="http://img.blog.csdn.net/20141109234235276?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHljX18=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
0 0
- 链表基础操作+实例[C语言实现]
- C语言基础实例
- C语言基础实例
- C语言基础 - 实现单向链表
- 链表基础(C语言实现)
- C语言链表实现队列操作
- C语言链表各类操作实现
- C语言实现链表基本操作
- 【c基础练习】c语言实现链表
- 用C语言建立链表并进行基础操作
- C语言注册表操作实例
- C语言注册表操作实例
- C语言注册表操作实例
- 带头节点链表实例(C语言实现)
- 链表的实现与操作(C语言实现)
- 静态链表的实现与操作(C语言实现)
- 循环链表的实现与操作(C语言实现)
- 双向链表的实现与操作(C语言实现)
- 贝叶斯集锦:贝叶斯派和频率派的一个例子
- Ext Spket在Eclipse/MyEclipse下的安装和配置(图文教程)
- Sequential Consistency浅谈
- 大竟-历届卷-三-2-古堡算式
- 正则表达式基础知识02
- 链表基础操作+实例[C语言实现]
- centos搭建samba服务、与windows系统共享文件
- 贝叶斯集锦:MCMCpack包
- 初识C#
- 贝叶斯集锦:从MC、MC到MCMC
- 第11周 项目4-特殊的三位数
- 链表--单链表的创建与查找
- eclipse 写c bug 解决笔记
- MFC中使用文本控件实现图标和位图的显示