简单数据结构之链式表(C实现)
来源:互联网 发布:华罗庚软件 编辑:程序博客网 时间:2024/04/27 07:11
/* ============================================================================ Name : Node.c Author : ntsk13 beijiwei@qq.com Version : Copyright : GPL Description : Link list study, complement by C Date : 2015.06.15 ============================================================================ */#include <stdio.h>#include <stdlib.h>typedef struct {int data;}Elem_t;typedef struct lnode{Elem_t e;struct lnode * next;}node,*pnode;void link_init(pnode * L);void link_clear(pnode *L);int link_get_length(pnode *L);Elem_t link_get_elem(pnode *L,int i);void link_traverse(pnode *L);void link_insert(pnode *L,Elem_t e,int i);void link_delete(pnode *L,int i);int main(void) {pnode H=NULL;//head pElem_t zero,one,two,three,four,five;zero.data=0;one.data=1;two.data=2;three.data=3;four.data=4;link_init(&H);link_insert(&H,zero,0);link_insert(&H,one,1);link_insert(&H,two,2);link_insert(&H,three,3);link_insert(&H,four,4);link_traverse(&H);printf("len is %d \n", link_get_length(&H) );five=link_get_elem(&H,4);printf("=================================\n");printf("five is %d \n",five.data );link_delete(&H,4);printf("=================================\n");link_traverse(&H);printf("len is %d \n", link_get_length(&H) );return EXIT_SUCCESS;}void link_init(pnode * L){*L=(node *)malloc(sizeof(Elem_t));//构造一个头结点((*L)->e).data =0;//头结点的data作为长度(*L)->next=NULL;}void link_clear(pnode *L){int i=0;pnode p=*L;pnode tmp=NULL;int len=( (*L)->e).data;for(i=0;i<len;i++){tmp=p->next;free(p);p=tmp;}*L=NULL;}int link_get_length(pnode *L){return ( (*L)->e).data;;}Elem_t link_get_elem(pnode *L,int i){int j=0;pnode p=(*L)->next;while(j <i ){j++;p=p->next;}return p->e;}void link_traverse(pnode *L){int i=0;pnode p=(*L)->next;//避免把头指针元素输出int len=( (*L)->e).data;for(i=0;i< len;i++){printf("The %dth elem is %d\n",i,(p->e).data);p=p->next;}}void link_insert(pnode *L,Elem_t e,int i)// before i insert{int j=0;pnode p=*L;pnode tmp=NULL;for(j=0;j< i;j++){p=p->next;}tmp=(node *)malloc(sizeof(Elem_t));(tmp->e).data=e.data;tmp->next=p->next;p->next=tmp;( (*L)->e).data++;}void link_delete(pnode *L,int i){int j=0;pnode p=(*L)->next;pnode tmp=NULL;for(j=0;j< i-1;j++){p=p->next;}tmp=p;p->next=p->next->next;( (*L)->e).data--;free(tmp->next);}
0 0
- 简单数据结构之链式表(C实现)
- 简单数据结构之链式表(C++实现)
- 数据结构之---C语言实现链式队列
- C - 数据结构 - 线性表 - 链式实现
- 数据结构 链式 栈 c实现
- 简单数据结构之顺序表(C实现)
- 数据结构C语言实现之二叉树链式结构
- 数据结构之链式表
- 数据结构 C语言实现 线性表的链式实现
- C语言数据结构-2.线性表之链式存储结构
- 数据结构之线性表(C++) -- 链式描述
- 数据结构之线性表的链式表示及其实现
- 数据结构之线性表的链式表示和实现
- 数据结构的C实现_链式队列
- 数据结构实现链式队列(C语言)
- 数据结构-链式栈-C语言实现
- c语言数据结构实现-链式队列
- 数据结构 -- 用C实现链式栈
- PCA
- tomcat配置,
- linux单用户模式
- 通过Egit将项目推送到GitHub上
- QTreeWidget实现元素拖拽移动,并绘制插入点
- 简单数据结构之链式表(C实现)
- jvm垃圾回收思考(1)
- 图解TCP-IP协议
- java客户端调用webservice
- 传智播客入驻郑州,给华中IT圈报喜
- Ubuntu下openCV安装
- Response.getWriter() 和Response.getOutputStream冲突
- 轻量级BroadcastReceiver --LocalBroadcastManager
- 多线程