算法与数据结构课程中的c++实现的顺序表和链表
2020-07-15 05:36
609 查看
呵呵,老师布置的作业,自己写的奥!
顺序表:
#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++版 北京科海)中摘抄
- 经典算法与数据结构的c++实现——冒泡排序
- 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现
- 用c++实现线性结构——顺序表和链表的基本操作
- 数据结构(7)线性表之链表C++实现差集
- C++之实现两个链表合并(迭代和递归版本)(19)---《那些奇怪的算法》
- 【C++数据结构】模版类实现双循环链表的基本操作
- 数据结构与算法之递推算法 C++与PHP实现
- 用Python实现的数据结构与算法:链表
- 简单数据结构之双向链表(C++实现)
- Java尚硅谷数据结构与算法学习记录(5)-约瑟夫问题(用单向环形链表实现)
- C++ 数据结构链表的实现代码
- 数据结构-C++实现(二):单向链表
- 数据结构之链表的实现-------C++课程设计-----学生选课管理系统
- 算法与数据结构【二】简单链表的实现
- 算法数据结构C++实现8 堆排序 难点分析