博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构--链表
阅读量:5308 次
发布时间:2019-06-14

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

#include 
using namespace std;typedef struct LNode{ int data; struct LNode * next;}LNode, * Listlist;//bool init(Listlist & L,int i) //尾插法//{// LNode *new_node, *temp_node;// temp_node = L;// for (int num = 0; num < i; num++)// {// new_node = new LNode;// new_node->next = NULL;// cin >> new_node->data;// temp_node->next = new_node;// temp_node = new_node;// }//}bool init(Listlist & L, int i) //头插法{ LNode * new_item, * temp_item;//申明一个暂时的节点的指针,然后一个向下传的界点的指针 temp_item = L;//将这个临时的节点当成是一个乡下传递的一个指针 int num;//数量 for (num = 0; num < i; num++) { new_item = new LNode;//申明一个新的节点 new_item->next = NULL;//将末尾置为空 cin >> new_item->data;//输入这个新节点的值 new_item->next = L->next;//将新节点指向第一个节点的地址 L->next = new_item;//将头节点指向这个新的节点 } return true;//返回正确}bool destroy(Listlist &L){ Listlist temp;//临时的指针 temp = L->next;//指向第一个节点 while (temp)//判断这个节点是不是空的,并作为一个结束条件 { L->next = L->next->next;//将头结点的下一个指针,指向下下个节点 free(temp);//释放单独提出来的节点 temp = L->next;//临时节点指向下一个节点 } return true;//返回正确}bool listempty(Listlist L){ return L->next ? false : true;//如果头指针的指向下一个节点的指针为空的话呢,那么这个就是一个空的链表.}int listlength(Listlist & L){ Listlist temp; temp = L->next;//将头指针指向的一个节点,当做是第一个节点。 int num = 1;//并赋值为1 while (temp)//将temp作为一个判断是否为空的一个条件 { temp = temp->next;//指向下一个,就像在数数一样 num++;//数目加一 } return num - 1;//因为最后一个数到的数是空指针所索引的数}bool getitem(Listlist L, int index, int &item){ if (index < 1 && index>listlength(L))//先判断这个条件是不是成立的,符不符合我们的输入的条件 { return false;//如果不符合,我们就返回这个错误的 } LNode * temp;//申明的是一个临时节点的指针 temp = L->next;//指向第一个节点 int num = 1;//并且将这个节点的标号为1 while (temp&&num < index )//一个是将这个指针是不是空的作为一个判断条件,然后将这个是不是到了,这个后面当做是一个判断的条件 { temp = temp->next;//将这个节点的值,指向下一个节点 num++;//数目加一 } if (!temp || num >= index ) { return false; } item = temp->data; return true;}bool locateitem(Listlist L, int index, int item){ if (index<1 && index>listlength(L)) { return false; } LNode * temp=L->next; int num = 1; while (temp&&num < index ) { temp = temp->next; num++; } return item == temp->data ? true : false;}bool listinsert(Listlist &L, int index, int item){ if (index<1 && index>listlength(L)) { return false; } LNode * temp=L; int num = 0; while (temp&&num < index -1) { temp = temp->next; num++; } LNode * new_node = new LNode; new_node->next = temp->next; cin >> new_node->data; temp->next = new_node; return true;}bool deleteitem(Listlist & L, int index, int &item){ if (index<1 && index>listlength(L)) { return false; } LNode * temp=L; int num = 0; while (temp->next&&num < index - 1) { temp = temp->next; num++; } item = temp->next->data; temp->next = temp->next->next; return true;}

  

转载于:https://www.cnblogs.com/lu-007/p/9737371.html

你可能感兴趣的文章
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&amp;语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>