C语言实现单链表的创建、插入、删除
来源:互联网 发布:nginx 点播回看 编辑:程序博客网 时间:2024/05/16 07:27
节点数据结构:
/**定义链式存储线性表的结构*/typedef struct LNode{ int data; //数据域 struct LNode * next; //指向下一个节点的指针} LNode,*LinkList;从尾部添加节点:
/**fun:CreateList_L()*desc:逆位序输入n个元素的值,建立带表头结点的单链线性表L*@param: L LinkList类型(结构体指针类型)变量的引用*@param:n int n n个元素*@ret void*/void CreateList_L(LinkList &L,int n){ L=(LinkList) malloc(sizeof(LNode)); //先建立一个带头结点的单链表 L->next=NULL; while(n--) { LinkList p=(LinkList) malloc(sizeof(LNode)); //动态开辟新的结点 scanf("%d",&p->data); //输入结点的值 p->next=L->next; L->next=p; //插入到表头 }}查找某一个元素:
/**fun:GetElem_L()*@desc:查找单链表中第i个位置的值,如果存在,将值赋给e并返回OK,不存在则返回ERROR*@param: L 头指针的引用*@param i int 查找的位置i*@param e int*@ret OK/ERROR int*/Status GetElem_L(LinkList &L,int i,int &e){ LinkList p=L->next; int j=1; while(p&&j<i) //寻找第i个位置 { p=p->next; j+=1; } if(!p||j>i) return ERROR; //i的位置不合法 e=p->data; return OK;}插入元素
/**fun:ListInsert_L()*@desc:在带头结点的单链线性表L中第i个位置之前插入元素e*@param: L 头指针的引用*@param i int 位置i*@param e int*@ret OK/ERROR int*/Status ListInsert_L(LinkList &L,int i,int e){ LinkList p=L; int j=0; while(p&&j<i-1) //找到第i-1个位置 { p=p->next; j+=1; } if(j>i-1||!p)return ERROR; //i的位置不合法时,即i=0或i>Length(L)+1(表长加1) LinkList q=(LinkList) malloc(sizeof(LNode)); //动态开辟新的结点 q->data=e; //将e的值赋给新的结点 q->next=p->next; p->next=q; //在i-1位置之后插入新的结点 return OK;}删除元素
/**fun:ListDelete_L7*@desc:在带头结点的单链线性表L中,删除第i个元素,并由e值返回*@param: L 头指针的引用*@param i int 删除元素的位置*@param e int*@ret OK/ERROR int*/Status ListDelete_L(LinkList &L,int i,int &e){ LinkList p=L; int j=0; while(p&&j<i-1) //找到第i-1个位置 { p=p->next; j+=1; } if(j>i-1||!(p->next)) return ERROR; //删除的位置不合理 LinkList q=p->next; e=q->data; //将值赋给e p->next=q->next; //删除第i个位置上的值 free(q); //释放i位置上的空间 return OK;}合并两个有序链表
/**fun:MergeList_List_L()*@desc:已知单链线性表La和Lb的元素按值非递减排列,归并La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列*@param La 单链线性表La的头指针 linkList类型指针变量的引用*@param Lb 单链线性表Lb的头指针 linkList类型指针变量的引用*@param Lc 单链线性表Lc的头指针 linkList类型指针变量的引用*@ret void**/void MergeList_List_L(LinkList &La,LinkList &Lb,LinkList &Lc){ LinkList pa=La->next,pb=Lb->next,pc; Lc=pc=La; //用La的头结点作为Lc的头结点 while(pa&&pb) { if(pa->data<=pb->data) { pc->next=pa; pc=pa; pa=pa->next; } else { pc->next=pb; pc=pb; pb=pb->next; } } pc->next=pa?pa:pb; //插入剩余段 free(Lb); //释放Lb的头结点}
阅读全文
0 0
- C语言实现单链表的创建、插入、删除
- c语言单链表的创建、插入、删除
- c语言实现单链表的操作:创建,删除,插入,反转, 排序等
- c语言:单链表的实现(一) 创建,插入,删除,查找
- C语言单链表的创建,插入,删除,逆致
- C语言单链表创建,插入,删除
- 单链表插入和删除结点c语言的实现
- C语言实现循环列表【创建、插入、删除】
- B树C语言实现-创建、插入、删除
- C语言实现带头结点的链表的创建、查找、插入、删除
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- 最小堆的插入、删除和创建的C语言实现
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C语言实现二叉搜索树的创建、插入、删除和查找
- C语言实现二叉查找树(搜索树)的创建,插入,查找,删除
- 平衡二叉树的C语言实现(创建、插入、查找、删除、旋转)【数据结构】
- C语言实现链表的创建,初始化,插入,删除,查找
- Agri-Net POJ
- mysql数据库主从复制
- Android开发&可折叠的布局——CollapseLayout
- spring cloud config bug
- 鹧鸪天
- C语言实现单链表的创建、插入、删除
- spring-data-elasticsearch + java 查询方法的封装
- table的一些设置
- JavaScript11种刷新的方法
- iOS原生实现二维码扫描
- C#调用打印机,打印图片
- Web车牌识别中API接口的调用
- Http Header里的Content-Type
- linux服务器出现大量TIME_WAIT的解决方法