双向链表的小练习
来源:互联网 发布:所有香烟条形码数据库 编辑:程序博客网 时间:2024/06/16 15:02
双向链表的小练习
用双向链表生成二十六个字母,然后,有用户输入一个数,无论正负,然后改表将向前移动该数的距离位置。
#include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR 0typedef char ElemType;typedef int Status;typedef struct DualNode{ ElemType data; struct DualNode *prior; struct DualNode *next;}DualNode, *DuLinkList;/*创建函数,返回一个状态码,OK表示1,ERROR表示0*/Status InitList(DuLinkList *L){ DualNode *p,*q;//创建两个临时的指针,q是当前最新生成的节点,p是移动的当前节点 int i; *L = (DuLinkList)malloc(sizeof(DualNode)); if( !(*L))//如果申请空间失败,则返回ERROR { return ERROR; } (*L)->next = (*L)->prior = NULL;//创建初期的头结点的前指针和后指针都是空的,什么也不指向。 p = (*L);//将临时指向的指针赋值为p,p这是就暂时停留在头结点的上空 /*要开始循环创建双向链表了*/ for(i = 0;i<26;i++) { q = (DualNode *)malloc(sizeof(DualNode));//每一个循环开始的时候,都会为当前的指针节点分配空间 if(!q) { return ERROR; } q->data = 'A'+i;//单引号的内容是A,快看不见了 q->prior = p; q->next = p->next;//p->是为空的,所以这一步就是将p的后续节点指向空置。 p->next = q; p = q; } //创建完毕 //下面两句就将创建好的线性双向表连接起来,循环起来 p->next = (*L)->next; (*L)->next->prior = p; return OK; }void Decide(DuLinkList *L,int i){ if( i>0 ){ do{ (*L) = (*L)->next; } while(--i); } if( i<0 ){ do{ (*L) = (*L)->next; } while(++i); } } int main(){ DuLinkList L;//只有在主函数中创建的表头 int i,n; InitList(&L);//不要忘了,实参传地址的时候,不能用*,而是用& printf("请输入一个整数n,\n您将要求该链表内容向前走n个单位:\n"); scanf("%d",&n); Decide(&L,n); for(i = 0;i<26;i++){ /*在函数中实现的指针操作,是不会因为传不回地址而不可调用的。 只要是地址操作,不论返回与否,都可直接调用*/ L = L->next;//L原指头结点,L->next就是第一个节点,然后赋值给当前变量L printf("%c ", L->data); } printf("\n"); return 0;}
阅读全文
0 0
- 双向链表的小练习
- 数据结构练习--双向链表的实现
- c++ 双向链表的练习
- LIST_ENTRY双向链表的练习
- 练习--实现双向链表
- 双向循环链表实践练习
- 第二次练习-双向循环链表
- 数据结构练习——双向链表
- VxWorks下使用双向链表lstLib的小例子
- VxWorks下使用双向链表lstLib的小例子
- 一个链表的小练习
- 小甲鱼 双向循环链表实践
- 练习1:把二元查找树转变成排序的双向链表
- 【课外作业】二维双向链表练习代码
- 数据结构——练习之双向链表实现
- bzoj 4548: 小奇的糖果 双向链表+树状数组
- bzoj 4548: 小奇的糖果 && bzoj 3658: Jabberwocky(双向链表+树状数组)
- 【Hibernate】双向关联的oneTomany练习
- Prototype原型模式和深克隆
- 深入理解vue.js双向绑定的实现原理
- Linux 中模拟延时和丢包的实现
- bzoj 1570: [JSOI2008]Blue Mary的旅行 分层图网络流
- bzoj1212 [HNOI2004]L语言(AC+dp)
- 双向链表的小练习
- 创建maven-web项目eclipse 版本 Version: Oxygen Release
- 谈谈我的保研经历
- springMVC中controller的几种返回方式
- C/C++中static关键字的作用
- nodejs安装不了和npm安装失败的解决方法
- Java零散小知识:使用Servlet时报java.lang.classnotfoundexception
- google protocol buffer 基础指南
- C++常见误区、常用方法(长期更新)