用C++代码实现Reverse link list

可能有很多种实现方式,分享一下最朴实的方法。

首先是节点和Link List结构:

struct mynode {  int value;  mynode * next; };

struct mylist {  mynode * first;  mynode * last; };

提供一些基础函数:

void list_init(mylist * container) {  container->first = 0;  container->last = 0; }

bool list_isempty(mylist * container) {  return 0 == container->first; }

mynode * list_first(mylist * container) {  return container->first; }

mynode * list_next(mynode * node) {  return node->next; }

void list_pushback(mylist * container, mynode * node) {  if (list_isempty(container))  {   container->first = node;   container->last = node;  }  else  {   container->last->next = node;   container->last = node;  }  node->next = 0; }

mynode * list_popfront(mylist * container) {  mynode * frontpoint = container->first;  container->first = frontpoint->next;  return frontpoint; }

最关键的是反转Link List:

void list_reverse(mylist * container)

{  mynode * tempfirst = container->first;

mynode * templast = container->last;

if (tempfirst != templast)  {   container->last = tempfirst;

mynode * frontnode = container->first;   mynode * nextnode = frontnode->next;   while (nextnode != 0)   {    mynode * temp = nextnode->next;    nextnode->next = frontnode;    frontnode = nextnode;    nextnode = temp;   }

container->first = templast;   container->last->next = 0;  } }

主函数验证正常工作:

int _tmain(int argc, _TCHAR* argv[]) {  mylist myinitiallist;  list_init(&myinitiallist);

for (int t = 1; t <= 10; t++)  {   mynode * temp = (mynode *)malloc(sizeof(mynode));   temp->value = t;   list_pushback(&myinitiallist, temp);  }

mynode * a = list_first(&myinitiallist);  while ( a)  {   printf("%d \n", a->value);   a = list_next(a);  }

list_reverse(&myinitiallist);  mynode * b = list_first(&myinitiallist);  while (b)  {   mynode * x = b;   printf("%d \n", b->value);   b = list_next(b);   free(x);  }

return 0; }

时间: 2024-11-13 07:51:12

用C++代码实现Reverse link list的相关文章

在线代码编辑器CodeMirror简介

1.什么是Code Mirror 最近做一个项目需要在网页上实现一个代码编辑器,支持语法高亮.自动缩进.智能提示等功能.发现Code Mirror刚好满足所有需求.Code Mirror是由js写的一款插件,其功能非常强大,用来实现网页端代码编辑器非常方便.如果想看效果图,可移步到这里----CodeOnline,这是我做的一个小项目,其中代码编辑器的就是用Code Mirror实现的. 2.使用Code Mirror 下面我将演示如何使用Code Mirror搭建一个简易的代码编辑器,并对其常

团队-象棋游戏-代码设计规范

逆流而上 象棋游戏 代码规范 一.前言: 本编程规范适用于编写HTML/CSS代码,本规范并不是一个一成不变的必须严格遵守的条文,特殊情况下应灵活应对,做到变通. 二.HTML编码: HTML是一种标记语言,HTML没有任何真正的编程语言中的循环或是流程控制语句.然而,HTML代码的格式和风格是非常重要的,因为要经常对HTML代码进行维护和修改,因此HTML代码必须有很清晰的逻辑结构和布局,增强可读性,而使其易懂和易于维护.HTML代码本身是不区分大小写的,但是为了更好的统一代码布局,本项目中H

【转】需求到代码的距离

需求到代码的距离有多远?也许很近,就在转角的街区,也许很远,就像6级专家与1级编码工的距离,取决于你的代码是如何实现的. 先来看一个简单的需求:网口状态down时删除路由表项.非常简单的一种实现:int link_down(){do_something(); delete_route(); //删除路由 } 需求与代码的距离如此之近,近的来不及反应就扑面而来. 不久,另外一个模块的人找你来了,说在网口状态down的时候也要把arp表项删除,希望在link_down接口里调用下delete_arp

css设置链接&lt;a&gt;四个状态代码实例

css设置链接<a>四个状态代码实例:本章节介绍一下如何设置链接<a>四个状态,因为默认状态下的链接状态在实际应用中可能无法完全满足我们的需要,下面先介绍链接a有哪四个状态.1.默认状态,也就是没有进行任何操作的状态,对应的css代码是a:link.2.鼠标悬浮状态,也就是当鼠标放在链接上时候的状态,对应的css代码是a:hover.3.鼠标按下状态,这个时候鼠标在连接上已经按下,但是还没有松开的状态,对应的css代码是a:active.4.鼠标点击过的状态:也就是鼠标点击过链接并

html-示例代码

<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"> <head> <meta charset="UTF-8"/> <meta http-equiv="refresh" content="3

Element link doesn&#39;t have required attribute property

前端标准http://validator.w3.org/ 拒绝你的代码时报 Element link doesn't have required attribute property 把样式链接 <link ... 移到 <body>里,会报上面提醒 要想不报,把<link 还放到 <head> 里 当然要放到 <body>里,加 property='stylesheet' <link rel='stylesheet' property='styles

关于html头部引用(meta,link)

/*这一段头部表示 如果安装了GCF,则使用GCF来渲染页面,如果为安装GCF,则使用最高版本的IE内核进行渲染.*/<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> /*这一段头部表示 IE浏览器用IE7模拟,IE9还是用IE9来渲染*/<meta content="IE=EmulateIE7, IE=9" http-equiv="X-UA-

测试php代码块执行时间的类

1 <?php 2 header("Content-Type: text/html; charset=UTF-8"); 3 class timer { 4 var $StartTime = 0; 5 var $StopTime = 0; 6 var $TimeSpent = 0; 7 8 function start() { 9 $this -> StartTime = microtime(); 10 } 11 12 function stop() { 13 $this -

30个开发人员有用的CSS代码片段整理值得借鉴

//Css Reset by Eric Meyer  html, body, div, span, applet, object, iframe,  h1, h2, h3, h4, h5, h6, p, blockquote, pre,  a, abbr, acronym, address, big, cite, code,  del, dfn, em, font, img, ins, kbd, q, s, samp,  small, strike, strong, sub, sup, tt,