单链表的建立,插入和释放
来源:互联网 发布:网购商城php源代码 编辑:程序博客网 时间:2024/04/29 12:36
#include<iostream>using namespace std;typedef struct node{int data;struct node*next;}Node, *List; //相当于把strcut node另外命名为NOde和List* 指针类型List creatlist(){Node* head, *p1, *p2; //建立一个链表,存储数据,p1和p2用于存储,当前数据和后一数据head = p2 = new Node;int num;cin >> num; while (-1 != num){p1 = new Node;p1->data = num;p1->next = NULL; //p1是新建的节点对象,存储输入的数据p2->next = p1; //p2指向新产生的对象p2 = p1; //p2转移到链表的尾部cin >> num;}p2->next = NULL; //这一步必须的操作,,因为链表尾部指向一个空的对象return head;}int getlistlength(List p){int lenlistlength = 0;while (p->next != NULL) //获取链表的长度,主要是循环从链表的头部开始进行循环,知道节点指向一个空的对象{p = p->next;lenlistlength++;}return lenlistlength;}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; i++){p2 = p1;p1 = p1->next; //得到插入位置的前一个对象和后一个对象的地址}Node* s = new Node; //建立一个新的对象存储输入的数据s->data = element;s->next = p1; p2->next = s; return p;}void printlist(List p){while (p->next != NULL) //循环输出,知道链表指向的对象是空为止{/*p = p->next;*/cout << p->next->data << endl; //因为第一个是链表的头,没存储数据p=p->next;}}void releaselist(List p) //利用递归的方法进行释放每一个对象,,,迭代到最后一个对象,利用栈 思想进行释放内存{if (NULL == p->next){delete p;}else{releaselist(p->next);delete p;}}int main(){List head = creatlist();printlist(head);int position = 4;int element = 100;head = insertnode(head, position, element);releaselist(head);return 0;}
0 0
- 单链表的建立,插入和释放
- 单链表的建立、求长、插入、删除、输出和释放 (带头结点)
- 对象的建立和释放
- 双链表的建立、求长、定位、插入、删除、输出和释放
- 单链表建立(头插法,头插法,用数组),求长,插入,删除,输出,释放(递归释放和循环释放),归并(递增和递减)
- 对象的动态建立和释放
- TCP连接的建立和释放
- C++对象的动态建立和释放
- C++对象的动态建立和释放
- C++对象的动态建立和释放
- TCP连接的建立和释放
- c++---对象的动态建立和释放
- 对象的动态建立和释放
- TCP连接建立和释放的有限状态机
- 对象的动态建立和释放
- UDT的连接建立和释放
- 双链表的建立、求长、定位、插入、删除、输出和释放(带头结点且成环状)
- 3.2.3 单链表的建立与释放
- 快速排序、归并排序、堆排序
- 次小生成树
- 解决SecureCRT中文显示乱码
- OOP项目-电影自助购票系统:增强版
- 机房收费系统之纵观全局
- 单链表的建立,插入和释放
- Django之第一个app<11>
- android中<include><merge><ViewStub>
- android httpClient 支持HTTPS的2种处理方式
- __proto__ 与prototype的区别,js函数声明与创建
- linux下定时执行任务方法
- 浮动
- USACO 2009 Open Gold 2.Work Scheduling
- leetcode: (219) Contains Duplicate II