单链表的初始化、插入、删除、查找
来源:互联网 发布:威锋认证的淘宝店 编辑:程序博客网 时间:2024/04/26 23:14
- 单链表的存储结构描述
typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;
LNode为结点的类型,LinkList为指向LNode节点类型的指针类型。定义一个LinkList类型的变量 L,作为单链表的头指针,若L==NULL,表长为0,即为空表
- 单链表的初始化
LNode *LinkListInit(){ LNode *L; //L=(LNode *)malloc(sizeof(LNode)); //为一个节点分配空间 L=new LNode; if(L==NULL) { return NULL; } L->next=NULL; //头指针的指针域设为空 return L;}
语句L=(LNode *)malloc(sizeof(LNode)); 表示申请一个LNode类型的存储空间,并将地址赋值给指针变量L,L所指结点为*L,*L的类型为LNode型。数据域为L->data(或者*L.data),同理指针域为L->next(或者*L.next)
- 插入
int LinkListInsert(LNode *L,int i,int e){ LNode *p,*s; int j=0; p=L; while(p!=NULL && j<i-1) //p指向第i—1个结点 { p=p->next; ++j; } if(p==NULL || j>i-1) //插入位置不合法 { return 0; } //s=(LNode *)malloc(sizeof(LNode)); //两种方法效果一样,这种需要stdlib.h的支持 s=new LNode; s->data=e; s->next=p->next; p->next=s; return 1;}
在单链表L中第i个元素之前插入e ,先将链表指针移动到要插入位置的前驱结点,即i-1,然后在插入
- 删除
int LinkListDelete2(LNode *L,int i){ LNode *p,*s; int j=0; p=L; while(p->next!=NULL && j<i-1) { p=p->next; j++; } if(!(p->next) || j>i-1) { cout<<"删除位置不合法"<<endl; return 0; } s=p->next; p->next=s->next; free(s); //释放结点 return 1;}
要删除第i个结点,先将i-1结点的指针指向i+1个结点,然后释放掉该结点
- 查找
int LinkListLocate(LNode *L,int e){ int i=1; LNode *p=L->next; while(p!=NULL && p->data!=e) { p=p->next; i++; } if(p==NULL) return 0; return i;}
依次遍历链表,判断是否与给定值相等
- 运行结果
0 0
- 单链表的初始化,建立,插入,查找,删除。
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除。
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除。
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化、建立、插入、查找、删除
- 单链表的初始化、插入、删除、查找
- 单链表的初始化、查找、删除、插入、释放
- 循环单链表的初始化,建立,插入,查找,删除
- 循环单链表的初始化,建立,插入,查找,删除
- 循环单链表的初始化,建立,插入,查找,删除。
- 双链表的初始化,建立,插入,查找,删除
- 双链表的初始化,建立,插入,查找,删除
- 双链表的初始化,建立,插入,查找,删除
- 双链表的初始化,建立,插入,查找,删除。
- java实现单链表的初始化,创建,删除,插入,查找,排序,同项删除,退出等功能
- 23
- java中try-catch-finally返回值问题
- 深入理解Java:注解(Annotation)自定义注解入门
- 建立一个类SUM,求二维数组外围各元素的和,并且输出数组各元素及所求之和。具体要求如下:
- JAVA 进制转换
- 单链表的初始化、插入、删除、查找
- 数字旋转方阵 分治法
- 历届试题 打印十字图 (蓝桥杯)
- UVA
- jQuery的应用
- c语言中关于数组的一些基本运算
- 博弈论
- SSL2295 暗黑破坏神(dp)
- 自篡改Dalvik字节码delta.apk原理