链表的创建等一系列操作
来源:互联网 发布:匈牙利算法详解 编辑:程序博客网 时间:2024/06/06 02:50
#include <stdio.h >#include <iostream>using namespace std;typedef int DataType; typedef struct Node{DataType data;struct Node * next;}Node,*LinkList;void CreateListH(LinkList &L)//头插法 {cout<<"请输入数\n";Node *s;int c;L = new Node;L->next = NULL; cin>>c; while (c != 0) { s = new Node; s->data = c; s-> next = L->next; L->next = s; cin>>c; }}void CreateListT(LinkList &L)//尾插法 {int c;cout<<"please input\n";Node *r,*s;L = new Node;L->next = NULL;r = L;cin >> c;while(c != 0){s = new Node;s->data = c;r->next = s;r = s;cin >> c;}r->next = NULL;}void Output(LinkList L)// l 头结点 {Node *p;for(p=L->next;p != NULL;p=p->next)printf("%d ",p->data);printf("\n");}Node * GetData(LinkList L,int i) //第i个节点的位置 {int j;Node *p;cout << "input第几个节点\n";cin >> i;i = i-1;if (i < 0) return NULL;p = L;//p point to headj = 0;//count++while (p->next != NULL && j < i){p = p->next;j++;}if (i == j) return p;else return NULL;}int Length(LinkList L)//计算长度 {Node *p;int len = 0;p = L->next;while(p != NULL){p= p->next;len++;} return len;}void Delete(LinkList &L,int i)//删除 {Node *pre,*r;cout << "please input which node will be deleted\n";pre = GetData(L,i-1);if (pre == NULL || pre->next == NULL)printf("delete is unreasonable\n");else {r = pre->next;pre->next = r->next;delete(r);}}void Insert(LinkList &L,int i,DataType x)//在第i个节点前插入x的新节点{Node *pre,*s;cout << "input x (待插入)\n";cin >> x;pre = GetData(L,i-1);if (pre == NULL)printf("error\n");else {s = new Node;s->data = x;s->next = pre->next;pre->next = s;} } int main(){Node *L;int c,d,x,i;cout<<"choose way\n";// 头插还是尾插 cin >> c;if (c == 1) CreateListH(L);elseCreateListT(L);d = Length(L);cout << d << endl;Insert(L, i,x);Output(L);Delete(L, i);Output(L);}
0 0
- 链表的创建等一系列操作
- 链表的一系列操作
- 创建顺序表并进行一系列操作
- 链表的创建、逆序等操作
- 链表的一系列操作(创建,插入,删除,从前到后,从后到前遍历整个链表)
- 关于单向链表的相关一系列操作(作为备忘)
- 关于双向链表的相关一系列操作(作为备忘)
- 静态顺序表的一系列操作
- 一系列的IO操作
- 单链表的一系列操作
- 任务栏的一系列操作
- git 的一系列操作
- 二维码的一系列操作
- 顺序表一系列操作
- 冒泡等一系列的算法
- 双循环链表的创建以及插入删除等操作
- 单循环链表的创建、插入删除等操作
- 链表的创建、插入、删除等操作
- Linux的打开文件表:打开文件表、文件描述符、打开的文件句柄以及i-node之间的关系
- 动态BroadcastReceiver封装
- jquery冲突的关键字nodeName、nodeValue和nodeType!
- 今天开始写博客
- 程序员面试指南之如何仅用递归函数和栈操作逆序一个栈
- 链表的创建等一系列操作
- 求第n小的质数
- 填空题空格解决方案
- 采用硬链接快速删除大表测试
- springMVC常用注解
- window.location.href/replace/reload()--页面跳转+替换+刷新
- ReviewForJob——java虚拟机的垃圾回收策略(个人总结)
- java疯狂讲义上的多线程通信
- pyodbc安装问题