#include

#include

#define ElemType int

typedef struct{

ElemType e;

struct Node *next;

}Node,*pNode,**ppNode;//使用pNode表示一级指针,ppNode表示二级指针

//获得链表中节点数目

int getElemNum(pNode head);

//获得链表最后一个结点的指针

pNode getLastElem(pNode head);

//在链表尾部追加结点,若链表为空,则该节点为首结点

void appendElem(ppNode head,ElemType e);

//获得链表的第i个结点的指针 n>=i>0

pNode getElem(pNode head,int i);

//删除链表尾节点

void delLastElem(ppNode head);

//显示链表的结点数目以及结点数据

void showElem(pNode head);

//删除链表的第i个结点 n>=i>0

void delElem(ppNode head,int i);

//在第i个结点前面添加结点

void insertElem(ppNode head,int i,ElemType e);

int main(int argc, char *argv[])

{

pNode head=NULL;

showElem(head);

appendElem(&head,1);

appendElem(&head,2);

appendElem(&head,3);

appendElem(&head,4);

showElem(head);

delLastElem(&head);

showElem(head);

insertElem(&head,1,10);

showElem(head);

delElem(&head,2);

showElem(head);

pNode p=getElem(head,3);

p->e=9999;

showElem(head);

return 0;

}

int getElemNum(pNode head){

if(!head) return 0;

pNode p=head;

int i=0;

while(p){

i++;

p=p->next;

}

return i;

}

pNode getLastElem(pNode head){

if(!head) return NULL;

pNode p=head;

while(p->next) p=p->next;

return p;

}

void appendElem(ppNode head,ElemType e){

pNode node = (pNode)malloc(sizeof(Node));

node->e=e;

node->next=NULL;

if(!*head){

*head=node;

return;

}

pNode p;

p=getLastElem(*head);

p->next=node;

}

void delLastElem(ppNode head){

int n =getElemNum(*head);

if(1>n) return;

if(n==1){

free(*head);

*head=NULL;

return;

}

pNode p = getElem(*head,n-1);

free(p->next);

p->next=NULL;

return;

}

pNode getElem(pNode head,int i){

int n = getElemNum(head);

if(i<1 || i>n) return;

int j=1;

pNode p=head;

while(j

j++;

p=p->next;

}

return p;

}

void showElem(pNode head){

if(!head){

printf("empty link\n");

return;

}

pNode p =head;

int n =getElemNum(head);

printf("this link has %d elems\n",n);

while(p){

printf("%d ",p->e);

p=p->next;

}

printf("\n");

return;

}

void delElem(ppNode head,int i){

int n =getElemNum(*head);

if(i<0 || i>n) return;

if(i==n) {

delLastElem(head);

return;

}

if(i==1){

*head=(*head)->next;

return;

}

pNode p1,p2;

p1=getElem(*head,i-1);

p2=getElem(*head,i+1);

p1->next=p2;

return;

}

void insertElem(ppNode head,int i,ElemType e){

int n=getElemNum(*head);

if(i<1 || i>n) return;

pNode node =(pNode)malloc(sizeof(Node));

node->e=e;

if(1==i){

node->next=getElem(*head,1);

*head=node;

return;

}

pNode p1,p2;

p1=getElem(*head,i-1);

p2=getElem(*head,i);

node->next=p2;

p1->next=node;

return;

}

数字根c语言链表实现,c语言简单链表实现 - 阿豪boy的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. c语言实现简单环形链表,c语言实现简单链表 - 阿豪boy的个人空间 - OSCHINA - 中文开源技术交流社区...

    #include #include #define ElemType int typedef struct{ ElemType e; struct Node *next; } Node,*pNode; ...

  2. c语言n个测试用例0为结束,编写测试用例 - osc_4l0h8in9的个人空间 - OSCHINA - 中文开源技术交流社区...

    软件测试用例: 软件测试用例就是指导你执行测试,帮助你证明软件功能或发现软件缺陷的一种说明. 可以总结为:每一个测试点的数据设计的步骤设计. 微信红包用例? 用例编号:HB_001 功能模块:发送红包 ...

  3. python语言是由谁设计并领导开发的_python语言概述 - osc_lt3ocv4d的个人空间 - OSCHINA - 中文开源技术交流社区...

    python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...

  4. 对称数c语言,中心对称数 - Developmer的个人空间 - OSCHINA - 中文开源技术交流社区...

    中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字. class Solutio ...

  5. c语言选择排序输出指定趟数结果,C语言之选择排序 - 杨源鑫的个人空间 - OSCHINA - 中文开源技术交流社区...

    选择法排序是相对好理解的排序算法.假设要对含有n个数的序列进行升序排列,算法步骤是: 1.从数组存放的n个数中找出最小数的下标(算法见下面的"求最值"),然后将最小数与第1个数交换 ...

  6. 约瑟夫环c语言计蒜客链表,约瑟夫环的故事 - osc_3n35hvex的个人空间 - OSCHINA - 中文开源技术交流社区...

    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading. ...

  7. %20ld c语言,C语言第二次实验报告 - osc_ldea7g3t的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.实验题目,设计思路,实现方法 第十一次作业(二维数组): 11-5 打印杨辉三角(20 分) 本题要求按照规定格式打印前N行杨辉三角. 输入格式: 输入在一行中给出N(1≤N≤10). 输出格式: ...

  8. c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...

    C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...

  9. c 调用mysql密码为空_C语言连MySQL - osc_srnunz15的个人空间 - OSCHINA - 中文开源技术交流社区...

    连接例程 用C语言连接MySQL数据库包含两个步骤" 初始化一个连接句柄结构: 实际进行连接. 初始化连接句柄 #include MYSQL *mysql_init(MYSQL *); 通常 ...

最新文章

  1. 推荐 7 个 Github 上近 200k Star 的计算机学习资源,练好前端内功的秘籍!
  2. 十分钟玩转 jQuery、实例大全
  3. 技术如何秒懂你?阿里百万级QPS资源调度系统揭秘
  4. python股票预测代码_python用线性回归预测股票价格的实现代码
  5. 最长子串(FZU2128)
  6. nginx环境下搭建nagios 3.5.0,及配置pnp4nagios画图
  7. 正则过滤符号_多角度理解正则项
  8. centos7搭建easy-mock服务
  9. Sass函数:random()函数
  10. Pandas DateOffset
  11. Atitit.一个cms有多少少扩展点,多少api wordpress  cms有多少api。。扩展点
  12. LVGL『Roller滚轮控件』介绍
  13. Win10设置系统保护色
  14. idea中热部署插件JRebel的激活
  15. 来吧,我和你聊聊操作系统
  16. Python向已有数据的Excel表写入数据
  17. 监督学习算法的发展史和它们之间的关系:从文氏图到回归、决策树、支持向量机和人工神经网络...
  18. 数据结构与算法实验01-使用链表实现多项式乘法
  19. Edge检查更新时出错:无法连接到Internet。如果使用防火墙,请将 MicrosoftEdgeUpdate.exe 加入允许列表中。
  20. 求助vmbox更新之后打不开了

热门文章

  1. C/C++变量之整型变量
  2. 前端入门学习笔记六十四
  3. 双一流大学王牌专业计算机,42所“双一流”大学优势专业
  4. 6.0 px30 sd卡移植的问题解决
  5. linux的socket模型有哪些,异步io 编程 Linux Socket五种I/O模型(zhuan(3)
  6. Web服务连接器:Servlet
  7. 音乐播放器开发实例(可毕设含源码)
  8. vue打包后供运维人员配置
  9. 设计一个偏向于外贸展会主题的外贸形势课程大纲
  10. 我们如何面对权利和特权