当前位置: 首页 > news >正文

m版网站开发365做网站

m版网站开发,365做网站,php 网站,wordpress默认页面设置方法目录 数组与链表算法-单向链表算法 C代码 单向链表插入节点的算法 C代码 单向链表删除节点的算法 C代码 对单向链表进行反转的算法 C代码 单向链表串接的算法 C代码 数组与链表算法-单向链表算法 在C中#xff0c;若以动态分配产生链表节点的方式#xff0c;则可以…目录 数组与链表算法-单向链表算法 C代码 单向链表插入节点的算法 C代码 单向链表删除节点的算法 C代码 对单向链表进行反转的算法 C代码 单向链表串接的算法 C代码 数组与链表算法-单向链表算法 在C中若以动态分配产生链表节点的方式则可以先行定义一个类数据类型接着在类中定义一个指针变量其数据类型与此类相同作用是指向下一个链表节点另外类中至少要有一个数据字段。例如声明一个学生成绩链表节点的结构并且包含两个数据字段姓名name)和成绩score以及一个指针next。接着就可以动态创建链表中的每个节点。假设现在要新增一个节点至链表的末尾且ptr指向链表的第一个节点程序必须设计以下4个步骤 动态分配内存空间给新节点使用。将原链表尾部的指针next指向新元素所在的内存位置内存地址。将ptr指针指向新节点的内存位置表示这是新的链表尾部。由于新节点当前为链表的最后一个元素因此将它的指针next指向NULL。 遍历Traverse单向链表的过程就是使用指针运算来访问链表中的每个节点。如果要遍历已建立的单向链表就可以使用结构指针ptr来作为链表的读取游标一开始指向链表的头。每次读完链表的一个节点就将ptr往下一个节点移动指向下一个节点直到ptr指向NULL为止。 C代码 #includeiostream using namespace std;class list { public:int num;char name[10];int score;class list* next; };void SetList(list* tempList) {cout 请输入学号;cin tempList-num;cout 请输入姓名;cin tempList-name;cout 请输入成绩;cin tempList-score; }int main() {list* newnode;list* ptr;list* delptr;cout 请输入5位学员的数据 endl;delptr new list;SetList(delptr);ptr delptr;for (int i 1; i 5; i) {newnode new list;SetList(newnode);newnode-next nullptr;ptr-next newnode;ptr ptr-next;}cout 学生成绩 endl;cout 学号\t姓名\t成绩\n endl;ptr delptr;while (ptr ! nullptr) {cout ptr-num \t ptr-name \t ptr-score endl;ptr ptr-next;}return 0; } 输出结果 单向链表插入节点的算法 将新节点加到第一个节点之前即成为此链表的首节点。将新节点加到最后一个节点之后。将新节点加到链表中间的位置。 C代码 #includeiostream using namespace std;class list { public:int num;char name[10];int score;class list* next; };void SetList(list* tempList) {cout 请输入学号;cin tempList-num;cout 请输入姓名;cin tempList-name;cout 请输入成绩;cin tempList-score; }void PrintList(list* head) {list* ptr head;while (ptr ! nullptr) {cout ptr-num \t ptr-name \t ptr-score endl;ptr ptr-next;} }list* FindNode(list* head, int num) {list* ptr;ptr head;while (ptr ! nullptr) {if (ptr-num num)return ptr;ptr ptr-next;}return ptr; }list* InsertNode(list* head, list* ptr, list* tempList) {if (ptr nullptr) {tempList-next head;return tempList;}else {if (ptr-next nullptr) {ptr-next tempList;}else {tempList-next ptr-next;ptr-next tempList;}}return head; }int main() {list* newnode;list* ptr;list* head;cout 请输入3位学员的数据 endl;head new list;SetList(head);ptr head;for (int i 1; i 3; i) {newnode new list;SetList(newnode);newnode-next nullptr;ptr-next newnode;ptr ptr-next;}cout endl;cout 学生成绩 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head);int position;while (true){cout 请输入要插入其后的学生学号要结束请输入-1;cin position;if (position -1)break;else {ptr FindNode(head, position);newnode new list;SetList(newnode);head InsertNode(head, ptr, newnode);}}cout endl;cout 学生成绩 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head);return 0; } 输出结果 单向链表删除节点的算法 删除链表的第一个节点删除链表的最后一个节点删除链表的中间节点 C代码 #includeiostream using namespace std;class list { public:int num;char name[10];int score;class list* next; };void SetList(list* tempList) {cout 请输入学号;cin tempList-num;cout 请输入姓名;cin tempList-name;cout 请输入成绩;cin tempList-score; }void PrintList(list* head) {list* ptr head;while (ptr ! nullptr) {cout ptr-num \t ptr-name \t ptr-score endl;ptr ptr-next;} }list* FindNode(list* head, int num) {list* ptr;ptr head;while (ptr ! nullptr) {if (ptr-num num)return ptr;ptr ptr-next;}return ptr; }list* DeleteNode(list* head, list* ptr) {list* top;top head;if (ptr head) {head head-next;}else {while (top-next ! ptr)top top-next;if (ptr-next nullptr)top-next nullptr;elsetop-next ptr-next;}cout 已删除第 ptr-num 号学生的信息 endl;delete ptr;return head; }int main() {list* newnode;list* ptr;list* head;cout 请输入3位学员的数据 endl;head new list;SetList(head);ptr head;for (int i 1; i 3; i) {newnode new list;SetList(newnode);newnode-next nullptr;ptr-next newnode;ptr ptr-next;}cout endl;cout 学生成绩 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head);int position;while (true) {cout 请输入要插入其后的学生学号要结束请输入-1;cin position;if (position -1)break;else {ptr FindNode(head, position);head DeleteNode(head, ptr);}}cout endl;cout 学生成绩 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head);return 0; } 输出结果 对单向链表进行反转的算法 了解单向链表节点的插入和删除之后大家会发现在这种具有方向性的链表结构中增删节点是相当容易的一件事。而要从头到尾输出整个单向链表也不难但若要反转过来输出单向链表则需要某些技巧。我们知道单向链表中的节点特性是知道下一个节点的位置是无从得知它的上一个节点的位置。如果要将单向链表反转就必须使用3个指针变量如下面程序代码中的before、ptr、last。 C代码 #includeiostream using namespace std;class list { public:int num;char name[10];int score;class list* next; };void SetList(list* tempList) {cout 请输入学号;cin tempList-num;cout 请输入姓名;cin tempList-name;cout 请输入成绩;cin tempList-score; }void PrintList(list* head) {list* ptr head;while (ptr ! nullptr) {cout ptr-num \t ptr-name \t ptr-score endl;ptr ptr-next;} }list* TransposeNode(list* head) {list* ptr head;list* before nullptr;list* last nullptr;while (ptr ! nullptr) {last before; before ptr;ptr ptr-next;before-next last;}head before;return head; }int main() {list* newnode;list* ptr;list* head;cout 请输入3位学员的数据 endl;head new list;SetList(head);ptr head;for (int i 1; i 3; i) {newnode new list;SetList(newnode);newnode-next nullptr;ptr-next newnode;ptr ptr-next;}cout endl;cout 学生成绩 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head);head TransposeNode(head);cout endl;cout 反转算法 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head);return 0; } 输出结果 单向链表串接的算法 对于两个或两个以上的链表的串接Concatenation也称为级联实现起来很容易只要将链表的首尾相连即可。 C代码 #includeiostream using namespace std;class list { public:int num;char name[10];int score;class list* next; };void SetList(list* tempList) {cout 请输入学号;cin tempList-num;cout 请输入姓名;cin tempList-name;cout 请输入成绩;cin tempList-score; }void PrintList(list* head) {list* ptr head;while (ptr ! nullptr) {cout ptr-num \t ptr-name \t ptr-score endl;ptr ptr-next;} }list* ConcatNode(list* head1, list* head2) {list* ptr;ptr head1;while (ptr-next ! nullptr)ptr ptr-next;ptr-next head2;return head1; }int main() {list* newnode;list* ptr;list* head1;list* head2;cout 请输入第一组3位学员的数据 endl;head1 new list;SetList(head1);ptr head1;for (int i 1; i 3; i) {newnode new list;SetList(newnode);newnode-next nullptr;ptr-next newnode;ptr ptr-next;}cout endl;cout 第一组学生成绩 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head1);cout 请输入第二组3位学员的数据 endl;head2 new list;SetList(head2);ptr head2;for (int i 1; i 3; i) {newnode new list;SetList(newnode);newnode-next nullptr;ptr-next newnode;ptr ptr-next;}cout endl;cout 第二组学生成绩 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head2);head1 ConcatNode(head1, head2);cout endl;cout 串接算法 endl;cout 学号\t姓名\t成绩\n endl;PrintList(head1);return 0; } 输出结果
http://www.hkea.cn/news/14289275/

相关文章:

  • 企业网站的建设怎么收费windows优化大师功能
  • 对运营网站有什么见解羽毛球赛事含金量排名
  • 各级院建设网站的通知鹰潭做网站的公司
  • 花卉网站建设策划方案阿里云服务器建设两个网站
  • 网站建设公司山而广州旅游团购网站建设
  • 网站如何做后台简单网页设计作品
  • 深圳网站建设首选深圳网站制作平台
  • 射阳做网站新手如何学做网站
  • ps个人网站设计网站建设的总结与改进
  • 网站制作将栏目分类免费的网站后台
  • 网上做网站怎么赚钱随州网站
  • 仁寿网站建设手机建设网站策划书
  • 网站制作精品案例欣赏微信小程序建设公司
  • 龙华营销型网站建设flash网站制作软件
  • 信创网站建设江苏建设人才网证书查询
  • 给网站加织梦后台wordpress页面颜色
  • 怎么做视频资源网站企业系统管理平台
  • 惠州企业网站设计如何用rp做网站步骤
  • linux 做网站用哪个版本前端网站做多语言
  • 8+1网站正能量直接入口没封招标投标公共服务平台
  • 做淘宝返利网站能挣钱江苏廉政建设网站
  • 做传销网站违法吗软件开发是做什么工作的
  • 代写新闻稿网站外包优化
  • 抓取wordpress站点用户市工商局网站建设情况
  • 做招聘图片的网站如何写手机适配网站
  • 需要个网站网网站站建建设设
  • 知名商城网站建设报价wordpress 问题
  • 网站备案个人承诺书石家庄新闻综合频道官网
  • 重庆巴南网站制作单县菏泽网站建设
  • 曲阜官方建设局网站网站建设详细教程视频