博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
建立完整的单向动态链表(包括初始化、创建、插入、删除、查找、销毁、输出)...
阅读量:7076 次
发布时间:2019-06-28

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

建立完整的单向链表

#include
#include
typedef struct node{ int data;//数据部分 struct node *next;//指针部分}Node;typedef Node List;//初始化链表List* initList();//销毁链表void destoryList(List *list);//插入数据void insertData(List *list,int Data);//删除数据void removeData(List *list,int Data);//查找数据Node* findData(List *list,int Data);//打印链表内容void printList(List *list);int main(){ //初始化链表 List *list = initList(); //插入数据 for(int i=0; i<10; i++) { insertData(list,i); } printList(list); //查找数据 printf("5的地址:%p\n",findData(list,5)); printf("10的地址:%p\n",findData(list,10)); //删除数据 removeData(list,0); printList(list); //销毁链表 destoryList(list);return 0;}//初始链表List* initList(){ List *list = (List*)malloc(sizeof(Node)); list->data = 0; list->next = NULL; return list;}//销毁链表void destoryList(List *list){ Node *pHead = list;//用来记录初始化的链表头结点 while(list != NULL) { //先移到下一个结点 list = list->next; //释放头结点 free(pHead); //记录新的头结点 pHead = list; }}//插入数据(一般都在表尾插入数据)void insertData(List *list,int Data){ //先分配一个新的结点 Node *pNode = (Node*)malloc(sizeof(Node)); pNode->data = Data; pNode->next = NULL; //将新结点链接到到尾部 while(list->next != NULL) { list = list->next;//先找到链表的尾结点 } list->next = pNode;//将新结点链接到尾结点}//删除数据(头结点不可删除,不然后面的结点就无法再进行遍历了)void removeData(List *list,int Data){ //1.查找结点,并记录上一个结点 //Node *pPre = NULL; Node *pPre = list; list = list->next;//跳过头结点 while(list!= NULL) { if(list->data == Data) { break; } pPre = list; list = list->next; } if(list!=NULL) { //2.找到后,将上一个结点和当前结点的下一个结点链接 pPre->next = list->next; //3.删除当前结点 free(list); }}//查找数据Node* findData(List *list,int Data){ while(list!= NULL) { if(list->data == Data) { break; } list = list->next; }return list;}//打印链表内容void printList(List *list){ list = list->next;//跳过头结点 while(list!= NULL) { printf("%5d",list->data); list = list->next; } printf("\n");}

 

转载地址:http://madml.baihongyu.com/

你可能感兴趣的文章
策略模式
查看>>
Shiro 设置session超时时间
查看>>
CANopen笔记2
查看>>
linux基础-第十三单元 硬盘分区、格式化及文件系统的管理二
查看>>
Android Activity 常用技巧
查看>>
Atitit attilax总结的对于attilax重要的jsr规范,以及需要增加的jsr规范
查看>>
.Net开源SqlServer ORM框架SqlSugar整理
查看>>
JQuery在循环中绑定事件的问题详解
查看>>
SOCKS 5协议详解(转)
查看>>
用Inno Setup来解决.NetFramework安装问题 (转载)
查看>>
使用axis调用WebService服务端
查看>>
php数组根据某一个键值,把相同键值的合并生成一个新的二维数组
查看>>
tar.xz文件格式的压缩与解压
查看>>
关于Unity中变量和函数的定义
查看>>
hdu 2952 Counting Sheep
查看>>
关于使用openfiler作为共享存储来安装rac时的问题
查看>>
Cocos2d-x学习笔记(16)(常见22种特效)
查看>>
AngularJs+bootstrap搭载前台框架——准备工作
查看>>
Linux Redis安装,Linux如何安装Redis,Linux Redis自动启动,Redis开机启动
查看>>
剑指offer61 按之字形顺序打印二叉树
查看>>