算法与数据结构课程中的c++实现的顺序表和链表
2020-02-07 09:00
525 查看
呵呵,老师布置的作业,自己写的奥!
顺序表:
#include <iostream> #include <string> using namespace std; struct Data { int stationNum; string name; string time; int personUpNum; int personDownNum; Data * next; }; Data* LinkedlistInit() //初始化一个站点 { Data * L = new Data; if (L == NULL) { cout <<"没有足够的内存空间!"<<endl; } L->next = NULL; return L; } int LinkedListLength(Data * L) //求总站数 { Data * p = new Data; p = L->next; int j = 0; while(p) { j++; p = p->next; } return j; } int LinkedListupPerson(Data * L) //求总上车人数 { Data * p = new Data; p = L->next; int j = 0; while(p) { j += p->personUpNum ; p = p->next; } return j; } Data * LinkedListInsert(Data * L,Data * p,Data e) //插入新的站点 { Data * pre = new Data; pre = L; while (pre && pre->next!=p) { pre = pre->next; } if (!pre) { cout <<"不存在*p结点!"<<endl; exit(0); } Data * s= new Data; s->name = e.name; s->time = e.time; s->stationNum = e.stationNum; s->personUpNum = e.personUpNum; s->personDownNum = e.personDownNum; s->next = pre->next; pre->next = s; return L; } Data * LinkedListDel(Data * L,string name) //删除一个站点 { if (L->next == NULL) { cout <<"空表!"<<endl; } Data * pre = new Data; pre = L; while (pre->next && pre->next->name != name) { pre = pre->next; } if (pre->next==NULL) { cout <<"不存在该站名!"<<endl; exit(0); } Data * s= new Data; s = pre->next; pre->next = s->next; delete(s); return L; } void Listtraversal(Data * L) //遍历List { Data * p = new Data; p = L; while(p != NULL) { cout <<"号码 :"<<p->stationNum<<endl; cout <<"站名 :"<<p->name<<endl; cout <<"到达时间 :"<<p->time<<endl; cout <<"上车人数 :"<<p->personUpNum<<endl; cout <<"下车人数 :"<<p->personDownNum<<endl; p = p->next; } } string ListgetTime(Data * L , string name) //根据站名得到时间 { Data * p = new Data; p = L->next; while(p->name != name) { p = p->next; } if (p != NULL) { return p->time; } else { cout <<"没有该站!"<<endl; exit(0); } } void ListgetprebyName(Data * L , string name) //根据站名得到前一个站 { Data * p = new Data; Data * q = new Data; q = L; p = L->next; while(p->name != name) { p = p->next; q = q->next; } if (p != NULL && q != L) { cout <<"前一个站为:"<<q->name<<endl; } else { cout <<"没有该站!"<<endl; } } void ListgetafterbyName(Data * L , string name) //根据站名得到后一个站 { Data * p = new Data; p = L->next; while(p->name != name) { p = p->next; } if (p != NULL && p->next != NULL) { cout <<"后一个站为:"<<p->next->name<<endl; } else { cout <<"没有该站!"<<endl; } } int main() { Data a; a.name = "烟台大学"; a.time = "7"; a.personUpNum = 32; a.personDownNum = 0; a.stationNum = 1; Data b; b.name = "工商学院"; b.time = "8"; b.personUpNum = 12; b.personDownNum = 22; b.stationNum = 2; Data c; c.name = "清泉路"; c.time = "9"; c.personUpNum = 2; c.personDownNum = 4; c.stationNum = 3; Data * header= new Data; header = LinkedlistInit(); LinkedListInsert(header,header->next,a); LinkedListInsert(header,header->next,b); LinkedListInsert(header,header->next,c); cout <<LinkedListLength(header)<<endl; Listtraversal(header->next); cout <<"总的上车人数 :"<<LinkedListupPerson(header)<<endl; cout <<"根据name得到time :"<<ListgetTime(header,"烟台大学")<<endl; ListgetprebyName(header,"工商学院"); ListgetprebyName(header,"清泉路"); ListgetprebyName(header,"烟台大学"); ListgetafterbyName(header,"工商学院"); ListgetafterbyName(header,"清泉路"); ListgetafterbyName(header,"烟台大学"); LinkedListDel(header,"烟台大学"); Listtraversal(header->next); }
链表:
以上的代码比较简陋,希望给大家指教。
转载于:https://www.cnblogs.com/lcqBlogs/archive/2011/09/16/2392393.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 算法与数据结构课程中的c++实现的顺序表和链表
- 【源代码】C++实现严蔚敏数据结构所有算法(一)线性表-顺序表
- 经典算法与数据结构的c++实现——带头结点的单链表
- C++类模板 实现双向循环链表的基本算法 《数据结构》(C++版 北京科海)中摘抄
- 数据结构—中缀表达式转后缀表达式算法及实现—栈的应用—计算表达式(C++代码实现)(1)
- 链表数据结构(C/C++语言实现)
- 算法与数据结构基础9:C++实现有向图——邻接矩阵存储
- 【C++数据结构学习笔记---栈】用链表实现栈
- 数据结构与算法:单向链表实现与封装(有头)
- 【C++数据结构】模版类实现双循环链表的基本操作
- 利用C++简单实现顺序表和单链表的示例代码
- 数据结构与算法——最短路径Dijkstra算法的C++实现
- C++实现两个有序链表合并(17)---《那些奇怪的算法》
- 数据结构(6)线性表之链表C++实现交集
- C++ 数据结构链表的实现代码
- 算法学习 - 链表的游标实现~ C++
- 数据结构-链表逆置(c++模板类实现)
- c++实现数据结构链表的插入 删除 倒置 取值(vs测试可以运行)
- c++实现数据结构3.双链表
- 算法与数据结构【二】简单链表的实现