单链表的相关操作
来源:互联网 发布:网络传销崩盘前兆 编辑:程序博客网 时间:2024/05/31 13:16
最近复习数据结构的时候,复习到了链表,把王道上的关于链表的基本操作敲了一遍,当是复习巩固,记录在此,没准以后能用得到。
//结点类型typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;
//前插法建立单链表LinkList CreateList1(LinkList &L){ LNode *p,*head = new LNode; int val = 0; head->data = -1; //头结点的数据为-1 head->next = NULL; cin>>val; do { p = new LNode(); p->data = val; p->next = head->next; head->next = p; cin>>val; }while(val != 9999); //当输入的元素9999 时,表示输入结束 L = head; return L;}
//尾插法建立单链表LinkList CreateList2(LinkList &L){ L = new LNode; //建立头结点 L->data = -1; L->next = NULL; LNode *temp = NULL,*rear = L; int val; cin>>val; while(val != 9999) { temp = new LNode; temp->data = val; temp->next = NULL; rear->next = temp; rear = temp; cin>>val; } return L;}
//获得指定位置的结点LNode* GetElem(LinkList L,int pos){ LNode *p = L; int i = 0; //用来计数 while(p != NULL) { if(i < pos) { p = p->next; ++i; } else break; } //cout<<"p:"<<p<<endl; //如果输入不合法则,返回失败 if(i != pos || p == NULL) { cout<<"pos is wrong!!!\n"<<endl; exit(-1); } return p;}
//在给定的单链表中查找指定元素,返回结点LNode* LocateElem(LinkList L,int x){ LNode *p = L; while(p != NULL) { if(x == p->data) return p; p = p->next; } cout<<"Can Find the x and Return NULL"<<endl; return NULL;}
//在指定位置插入指定元素void InsertElem(LinkList &L,int x,int pos){ LNode * p = new LNode; p->data = x; LNode * pre = GetElem(L,pos-1); //获取第pos的前一个位置的元素指针 if(pre != NULL) { p->next = pre->next; pre->next = p; }}
//删除指定位置的元素void DeleElem(LinkList &L,int pos,int &e){ LNode * pre = GetElem(L,pos-1); LNode *p = pre->next; if(p == NULL) //如果p为空,则代表删除的是最后一个元素后面的一个元素,删除失败 { // e = -1; cout<<"pos is wrong!!!"<<endl; exit(-1); } else e = p->data; //将删除元素返回, pre->next = p->next; delete p;}
//返回表的长度,int GetLength(LinkList &L){ int length = -1; LNode *p = L; while(p != NULL) { p = p->next; ++length; } return length;}
阅读全文
0 0
- 单链表的相关操作
- 单链表的相关操作
- 单链表的相关操作
- 单链表的相关操作
- 单链表的相关操作
- 对单链表的相关操作
- c++单链表的相关操作
- 单链表的相关操作之创建
- 单链表相关操作的C++实现
- 文件的相关操作
- 数据库的相关操作
- 数据库的相关操作
- 注册表的相关操作
- 图的相关操作
- 栈的相关操作
- 数组的相关操作
- Cookie 的相关操作
- 绘图的相关操作
- Spring中Bean的作用域(Scope)
- ./configon keepalived异常
- C++/C++11中头文件<cmath>的使用
- 数据库连接池
- card sorting
- 单链表的相关操作
- 激活Intellij IDEA
- jzoj5398. 【NOIP2017提高A组模拟10.7】Adore
- string 简单使用
- LeetCode 题解
- Leetcode-553
- JNDI数据库连接池
- POJ1276-Cash Machine(多重背包)
- vim @ ubuntu环境配置