数据结构——链表C/C++实现
来源:互联网 发布:广州锋泽网络垃圾 编辑:程序博客网 时间:2024/06/06 23:57
直接上代码
MyList.h 头文件
#ifndef _MyList_H#include<cstdio>struct Node{ int val; Node* next; Node():val(0),next(NULL){} Node(int i):val(i),next(NULL){}};typedef struct Node* ptrNode;typedef ptrNode MyList;typedef ptrNode Position;bool isEmpty(MyList L);bool isLast(Position p,MyList L);Position find(int x, MyList L);void del(int x,MyList L);Position findPrevious(int x, MyList L);void insert(int x, MyList L, Position p);void push_front(int x, MyList L); // 头插void push_back(int x, MyList L);//尾插void deleteList(MyList L);Position Header(MyList L);Position First(MyList L);void printList(MyList L);#endif
MyList.cpp
#include "MyList.h"#include <cstdio>bool isEmpty(MyList L){ return L->next==NULL;}bool isLast(Position p,MyList L){ return p->next == NULL;}Position find(int x, MyList L){ Position tmp = L->next; while(tmp!=NULL && tmp->val != x){ tmp = tmp->next; } return tmp;}Position findPrevious(int x, MyList L){ Position P = L; while(P->next!=NULL && P->next->val != x){ P = P->next; } return P;}void del(int x,MyList L){ Position p = findPrevious(x,L); if(!isLast(p,L)){ Position tmp = p->next; p->next = tmp->next; delete(tmp); }}void insert(int x, MyList L, Position p){ Position tmp; tmp = new Node; if(tmp == NULL){ printf("Out of space.\d"); return; } tmp->val = x; tmp->next = p->next; p->next = tmp;} // 头插void push_front(int x, MyList L){ Position tmp = new Node(x); tmp->next = L->next; L->next = tmp;}//尾插void push_back(int x, MyList L){ Position tmp = new Node(x); Position p= L; while(p->next != NULL) p = p->next; p->next = tmp;}void deleteList(MyList L){ Position p = L->next; while(p != NULL){ Position next = p->next; L->next = next; delete p; p = next; } //delete L;}Position Header(MyList L){ return L;}Position First(MyList L){ return L->next;}void printList(MyList L){ Position p=L->next; while(p != NULL){ printf("%d ",p->val); p = p->next; } printf("\n");}
main.cpp
#include<iostream>#include<cstdio>#include<time.h>#include "MyList.h"using namespace std;int main(){ MyList header = new Node; srand(time(NULL)); for(int i=0; i<10; i++){ int val = rand()%100; push_back(val, header); } printList(header); deleteList(header); for(int i=0; i<10; i++){ push_front(i+1,header); } printList(header); Position p = find(3,header); printf("%d\n",p->val); del(3,header); printList(header); return 0;}
0 0
- 数据结构——链表C/C++实现
- 数据结构——单链表(C语言实现)
- 数据结构(二)——链表(C语言实现)
- 数据结构---栈链表c实现
- 数据结构---单链表c实现
- 数据结构(C语言实现)
- C数据结构实现队列
- 数据结构C语言实现
- 数据结构--单链表C实现
- 数据结构(C语言实现)
- 数据结构——单链表的实现——C语言版
- 数据结构C语言实现系列[1]——线性表
- 数据结构C语言实现系列[2]——栈
- 数据结构C语言实现系列[4]——队列
- 数据结构C语言实现系列[5]——串
- 数据结构C语言实现系列[6]——堆
- 数据结构C语言实现系列[7]——二叉树
- 数据结构C语言实现系列[8]——树
- Recast & Detour 寻路引擎的基本流程
- 一张图说明进程, 线程, 操作系统内存管理
- 第一节-数据结构
- Collections集合框架工具类
- C语言复杂声明的本质与局限
- 数据结构——链表C/C++实现
- linux的文件目录结构
- 集合(ArrayList,HashMap,HashSet)扩容
- TLCL学习笔记03——键盘高级操作技巧、权限、进程
- 纯ubuntu16.04下安装tinyos2.1.2教程
- Java中的重写和重载
- Bitmap压缩的几种方式
- webstorm svn Problems while loading file history 问题
- JSON的解析