数据结构-链表操作
来源:互联网 发布:初中英语词汇软件 编辑:程序博客网 时间:2024/05/18 06:22
#include<iostream>using namespace std; #define OK 1;#define ERROR 0;typedef int ElemType;typedef int Status; typedef struct LNode //定义链表结构体{ ElemType data; struct LNode *next;}LNode, *LinkList; Status CreateList_L(LinkList &L,int n) //创建链表并输入数据{ int i; LinkList p,q; //p q :过度指针 L=new LNode; //新申请的结点 L->next=NULL; //生成头指针 q=L; cout<<"please input "<<n<< " numbers"; for(i=1;i<=n;i++) { p=new LNode; //申请新的结点 cin>>p->data; q->next=p; // 链表链接 q=q->next; // 跳指针 } q->next=NULL; //生成尾指针 return OK;} Status Outptlist_L(LinkList L) //输出链表{ LinkList p; p=L->next; //指向首结点 if(p==NULL) //当链表尾空 指示返回空链表 { cout<<"This list is empyt."<<endl; } while (p!=NULL) { cout<<p->data<<" "; //当链表不为空,输出链表数据 p=p->next; // 跳指针 } cout <<endl; return OK;} int Listlength_(LinkList L) //求链表长度{ LinkList p; int n=0; p=L->next; //p指向首结点 while (p!=NULL) { n++; p=p->next; } return n;} Status GetElem_L(LinkList L,int i,ElemType &e) //将链表L中第i个元素用e返回{ LinkList p; int j; if (i<1||i> Listlength_(L)) //判断选择的合理性 return ERROR; p=L->next; for (j=1;j<i;j++) //for 循环寻找第i个元素 p=p->next ; e=p->data; //用e返回 return OK;} Status ListInsert_L(LinkList&L,int i,ElemType e) // 在链表第i个位置插入e{LinkList p,S;int j;if (i<1||i> Listlength_(L)+1) //判断选择的合理性 return ERROR;if (i==1) p=L; //当在第一个元素插入时p指向头指针else p=L->next; //否则指向首结点 for(j=1;j<i-1;j++) p=p->next;S=new LNode; //申请新的结点S->data=e; //将e赋给新的结点S->next=p->next; //将新结点与前一个结点的next链接p->next=S; //将前一个结点与新节点链接return OK;} Status ListDelete_L(LinkList&L,int i,ElemType &e) //删除链表L的第i个元素,并用e返回{ LinkList p,q; int j; if (i<1||i> Listlength_(L)) //判断选择的合理性 return ERROR; p=L->next; for(j=1;j<i-1;j++) //找到第i个元素 p=p->next; q =p->next; // q指向p的next e=q->data; // 取q的数据 p->next=q->next; //将p的next与q的next链接 free(q); //释放指针 return OK;} void main () { int n,m,k; LinkList L1; cout <<"please input a umber: "; cin>> m; CreateList_L(L1,m); cout<<"输出列表:"; Outptlist_L( L1); cout<<"The length is "<< Listlength_(L1)<<endl; GetElem_L( L1,3,n); cout<<"The number is "<<n<<endl; ListInsert_L(L1,6, 0); cout<<"The Insertlist is : "; Outptlist_L( L1); ListDelete_L(L1,3,k); cout<<"The Deletelist is : "; Outptlist_L( L1); cout<<"The Delete number is "<<k<<endl; }
阅读全文
0 0
- [数据结构]链表操作
- 数据结构-链表操作
- 数据结构链表基本操作
- 数据结构链表操作1
- 数据结构-----链表基本操作
- 数据结构链表的操作
- 数据结构之链表操作
- 数据结构之链表操作
- 数据结构之链表操作
- 数据结构,链表基本操作
- 数据结构之链表操作
- 数据结构链表基本操作
- 数据结构 链表的基本操作
- 线性链表 各种操作整理 数据结构
- 数据结构:链表的简单操作
- C++数据结构之链表操作
- 数据结构:多项式链表的操作
- 数据结构链表的一些操作!
- Android学习随笔(10)------碎片Fragement
- 从mysys2到hashcat
- 解决Eclipse中Android65535错误的方法
- 解决centos7 安装JDK 出现的问题 没有那个文件或目录
- 13. Roman to Integer
- 数据结构-链表操作
- 讲给Android程序员看的前端教程(22)——小结和答疑
- opencv3 安装指南
- 普通流中块级元素的水平格式化和margin
- 树莓派3B+ 启用LCD显示屏
- 今天第一次写博客,心情好紧张。
- eclipse下配置struts2,超详细!(包括war文件不能解压问题)
- 数据结构-二叉树的基本操作
- Maven搭建SSM框架