博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单数据结构之链表(无头节点)
阅读量:6418 次
发布时间:2019-06-23

本文共 3281 字,大约阅读时间需要 10 分钟。

/************************************************************************************** * Function     : 链表学习* Create Date  : 2014/05/13 * Author       : NTSK13 * Email        : beijiwei@qq.com * Copyright    : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。 *                任何单位和个人不经本人允许不得用于商业用途 * Version      : V0.1                    ***************************************************************************************                    简单数据结构之链表(无头节点)     **************************************************************************************/  #include
#include
#include
typedef struct node //建立节点 数据结构{ int data; struct node *next;}Lnode;void init_list(Lnode *ph)//链表初始化{ ph=NULL;}int get_length(Lnode *ph){ int len=0; Lnode *ptmp=ph; if(ph==NULL) return (0); while(ptmp->next) { len++; ptmp=ptmp->next; } return (len+1);}int search_list(Lnode * ph,int val)//查找链表元素{ Lnode *ptmp=ph; while( ptmp->next != NULL) { if(ptmp->data == val ) return (1); ptmp=ptmp->next; } return (0);}void insert_head_list(Lnode ** ph,int val)//插入链表元素 插头{ Lnode *ptmp=NULL; ptmp=(Lnode *)malloc( sizeof(Lnode) ); if(ptmp==NULL) { printf("Allocate memory fail !!! \n"); fflush(stdout); } ptmp->data=val; ptmp->next=*ph; *ph=ptmp;}void insert_tail_list(Lnode **ph,int val)//插入链表元素 插尾{ Lnode *ptmp=NULL; Lnode *pht=*ph; ptmp=(Lnode *)malloc( sizeof(Lnode) ); if(ptmp==NULL) { printf("Allocate memory fail !!! \n"); fflush(stdout); } ptmp->data=val; ptmp->next=NULL; if(*ph==NULL) { *ph=ptmp; }else { while( (*ph)->next!=NULL) *ph=(*ph)->next; (*ph)->next=ptmp; *ph=pht; }}void delete_nth_list(Lnode **ph,int n)//删除链表第n元素 n= 0,1,2,...{ int i=0; Lnode *pre=NULL; Lnode *post=NULL; pre=post=*ph; if(n==0) { *ph=(*ph)->next; free(pre); }else { while(i != n) { pre=post; post=post->next; i++; } pre->next=post->next; free(post); }}void traverse_list(Lnode *ph)//遍历链表{ int len=get_length(ph);//获取链表长度 int i=0; Lnode *ptmp=ph; for(i=0;i
data); fflush(stdout); ptmp=ptmp->next; }}void traverse_list2(Lnode *ph)//遍历链表{ Lnode *ptmp=ph; while(ptmp->next) { printf("%d \n",ptmp->data); fflush(stdout); ptmp=ptmp->next; }}void destroy_list(Lnode **ph){ Lnode *ptmp=*ph; while( (*ph)->next ) { ptmp=*ph; *ph=(*ph)->next; free(ptmp); } *ph=NULL;}int main() { Lnode * phead=NULL;//定义头指针 int array[5]={
0,1,2,3,4}; int i=0; for(i=0;i<5;i++) { insert_tail_list(&phead,array[i]); } traverse_list(phead); delete_nth_list(&phead,2);//删除链表第2个元素 0,1,2,... printf("\n\n"); traverse_list(phead); printf("\n\n"); for(i=0;i<5;i++) { insert_head_list(&phead,array[i]); } traverse_list2(phead); printf("\n\n"); printf("%d \n",search_list(phead,2) );//查找链表元素 destroy_list(&phead); return (0);}

 

转载于:https://www.cnblogs.com/ntsk13/p/3728217.html

你可能感兴趣的文章
五种I/O 模式,select、epoll方法的理解,BIO、NIO、AIO理解 相关文章
查看>>
flash流媒体资料
查看>>
关于C++ const 的全面总结
查看>>
Javascript模块化编程
查看>>
atitit.提升2--3倍开发效率--cbb体系的建设..
查看>>
微软职位内部推荐-SDE
查看>>
myeclipse集成weblogicserver
查看>>
Maven的第一个小程序
查看>>
人机交互的新方向:智能聊天机器人
查看>>
sys--system-sysdba-sysoper用户区别
查看>>
asp.net 后台获取flv视频地址进行播放
查看>>
查看macbook是多少位
查看>>
ASP.NET 保存txt文件
查看>>
【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)...
查看>>
ASCII码表及键盘码表。
查看>>
angular学习笔记(二十三)-$http(1)-api
查看>>
CentOS 65 java 访问 MS SQL
查看>>
Oracle11g 搭建单实例DataGuard (转载)
查看>>
tar + find
查看>>
如何设置基线网络
查看>>