单链表的建立、求长、插入、删除、输出和释放 (带头结点)
来源:互联网 发布:java上传ftp速度慢 编辑:程序博客网 时间:2024/05/01 10:51
#include<iostream>using namespace std;typedef struct node{int data;struct node *next;}Node, *List;//建立带头结点的单链表List createList(){Node *head, *p1, *p2;p1 = p2 = head = new Node;//头结点int num;cin >> num;while(-1 != num){p1 = new Node; p1->data = num;p2->next = p1;p2 = p1;cin >> num;}p2->next = NULL; //不可少return head;}int getListLength(List p){int length = 0;while(NULL != p->next){length++;p = p->next;}return length; //不包括头结点}//把element插入到第position个位置List insertNode(List p, int position, int element){int length = getListLength(p);if(position < 1 || position > length + 1){cout << "wrong position" << endl;exit(1);}Node *p1 = p ->next;Node *p2 = p;int i;for(i = 0; i < position - 1; i++){p2 = p1;p1 = p1->next;}Node *s = new Node;s->data = element;p2->next = s;s->next = p1;return p;}List delNode(List p, int num){Node *p1 = NULL, *p2 = NULL;if(NULL == p->next)return p;p1 = p->next;p2 = p; //不可少//注意while中条件的顺序while(NULL != p1 && num != p1->data){p2 = p1;p1 = p1->next;}//注意if中条件的顺序if(NULL == p1)cout << "not been found" << endl;else{p2->next = p1->next;delete p1;}return p;}void printList(List p){while(NULL != p->next){cout << p->next->data << " ";p = p->next;}cout << endl;}//下面采用递归释放(也可循环释放)void releaseList(List p){if(NULL == p->next)delete p;else{releaseList(p->next);delete p;}}int main(){List head = createList();printList(head);int position = 4;int element = 100;head = insertNode(head, position, element);printList(head);int num = 3;head = delNode(head, num);printList(head);releaseList(head);return 0;}
- 单链表的建立、求长、插入、删除、输出和释放 (带头结点)
- 双链表的建立、求长、定位、插入、删除、输出和释放(带头结点且成环状)
- 双链表的建立、求长、定位、插入、删除、输出和释放
- 单链表建立(头插法,头插法,用数组),求长,插入,删除,输出,释放(递归释放和循环释放),归并(递增和递减)
- c++链表 建立 输入 输出 删除结点 插入结点 释放链表 的函数
- 带头结点单链表的基本操作(创建、测长、打印、插入、删除、取值、合并、排序、逆置)
- 程序员面试宝典_链表基本操作,建立,求长,删除和插入特定值的结点
- 双链表的创建,求长,插入,删除,打印,释放(循环和非循环)
- 带头结点单链表的建立
- 带头结点和不带头结点的尾插法建立双链表
- 删除单链表(带头结点)的最小值结点
- 单链表插入排序(带头结点与不带头结点)
- 不带头结点的单链表的建立
- 不带头结点的单链表的建立
- 链表建立,插入,删除,输出,释放
- 链表建立,插入,删除,释放,输出
- 编程实现双链表的建立、插入、删除、求长、逆置
- C语言实现单链表的节点插入(带头结点)
- 傻孩子。痛了?放手吧:伤感日志
- 求两坐标之间的距离
- FreeMarker优缺点
- 提领类型双关的指针将破坏重叠规则——strict-aliasing
- CSS布局——左定宽度右自适应宽度并且等高布局
- 单链表的建立、求长、插入、删除、输出和释放 (带头结点)
- 我的冷漠是我拒绝伤害的刺猬甲:QQ伤感日志
- hdu 4331 Image Recognition
- 在MyEclipse环境下将采用SSH2框架的项目从连接到MySQL数据库改成连接到Oracle数据库
- xdebug调试 php文章汇总(NotePad++,NetBeans IDE,Eclipse,wincachegrind,komodo)
- android项目 添加
- 敏捷教练第四章
- ARM嵌入式的理解
- IP地址中的保留地址