单链表的测长和打印和节点查找、插入、删除、逆置
来源:互联网 发布:什么软件测八卦 编辑:程序博客网 时间:2024/06/06 01:05
//返回单链表的长度int length(node *head){ int len = 0; node *p; p = head->next; while(p!=NULL) //遍历链表 { len++; p = p->next; } return len;}
//打印单链表void print(node *head){ node *p; int index = 0; if(head->next ==NULL) { printf("Link is empty!\n"); return; } p = head->next; while(p!=NULL) { printf("The %dth node is: %d\n",++index,p->data); p= p->next; }}
//查找单链表pos位置的节点,返回节点指针//pos从0开始,0返回head节点node *search_node(node *head,int pos){ node *p = head->next; if(pos<0) { printf("incorrect position to search node!\n"); return NULL; } if(pos==0) { return head; } if(p==NULL) { printf("Link is empty!\n"); return NULL; } while(--pos) { if((p = p->next) ==NULL) { printf("incorrect position to search node!\n"); break; } } return p;}
//在单链表pos位置处插入节点,返回链表头指针//pos从0开始计算,0表示插入到head节点后面node *insert_node(node *head,int pos,int data){ node *item = NULL; node *p; item = (node*)malloc(sizeof(node)); item->data = data; if(pos==0) { head=>next = item; return head; } p = search_node(head,pos); //获取位置pos的节点指针 if(p!=NULL) { item->next= p->next; //原先p的后一个节点给item p->next = item; } return head;}
//单链表的删除//删除单链表的pos位置的节点,返回链表头指针//pos从1开始计算,1表示删除head后的第一个节点node *delete_node(node * head,int pos){ node *item = NULL; node *p = head->next; if(p==NULL) { printf("Link is empty!\n"); return NULL; } p = search_node(head,pos-1); if(p!=NULL&&p->next!=NULL) { item = p->next; p->next = item->next; delete item; } return head;}
//逆置node *reverse(node *head){ node *p,*q,*r; if(head->next==NULL) { return head; } p = head->next; q = p->next; p->next=NULL; while(q!=NULL) { r = q->next; q->next = p; p = q; q = r; } head->next = p; return head;}
阅读全文
0 0
- 单链表的测长和打印和节点查找、插入、删除、逆置
- 单链表的建立、测长、打印、删除节点、插入节点
- 单链表的创建,表长,插入,查找,逆置,中间元素,删除节点,打印
- 单链表的创建、测长、打印、插入和删除
- 双链表的创建、测长、打印、插入和删除
- 单链表的建立、测长、打印、删除节点、插入节点、排序、逆转
- 单链表的建立、测长、打印、删除节点、插入节点、排序、逆置操作。
- 链表的建立、删除节点、侧长和打印;
- 单链表的建立,测长,打印,删除,插入,排序,逆置
- 单链表的建立,测长,打印,删除,插入,排序,逆置
- 单链表的建立,测长,打印,删除,插入,排序,逆置
- 二叉查找树节点的查找、插入和删除
- 线性表---单链表(创建、插入、删除、排序、测长和打印输出)
- 实现一个单链表的建立、测长、打印、删除、插入
- 使用JAVA实现单链表的建立、测长、打印、删除、插入、排序、逆置
- 【数据结构】单链表的建立,测长,打印,删除,插入, 排序, 逆置
- 双链表的创建,求长,插入,删除,打印,释放(循环和非循环)
- 13.3 链表-按顺序插入和查找删除节点
- 数组形式二叉树之C++封装
- synchronized关键字的使用
- 配置varnish服务
- 深入研究Struts2(三)---准备Struts2的学习和开发环境
- 关于eventmachine,协程在rails里面的使用
- 单链表的测长和打印和节点查找、插入、删除、逆置
- 【图论经典题】Prison Break
- 快捷键 变量 内外类 加号重载20170719
- java程序员的python之路(线程)
- 设计模式-装饰者模式
- palindromeNumber
- Java实训第8天(面向对象)
- 访问权限修饰符(4个),继承的补充;抽象(abstract)、学习笔记
- 利用InetAddress.getByName()来产生你的IP地址