单链表有关操作
单链表有关操作
不带头结点的单链表
单链表的初始化,就是建立个链表,根据头指针来一点点增加
#include<stdio.h>
typedef struct LNode{
int data; //值域
struct LNode *next; //指针域
}LNode, *LinkList;
bool InitList (LinkList &L){
L=NULL; //L置为空,未开辟空间没有结点 ,,,即没有头结点
return true;
}
int main(){
LinkList L; //这是指针,相当于LNode *L;
InitList(L);
return 0;
}
带头结点的单链表初始化
#include<stdio.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
bool InitList (LinkList &L){
L=(LNode*)malloc(sizeof(LNode)); //建立个空间
if(L=NULL){ //如果没空间了,,返回false;
return false;
}
L->next=null; //让这个空间next指向null;
return true;
}
int main(){
LinkList L;
InitList(L);
return 0;
}
视图
单链表按位序插入(带头结点)
bool ListInsert(LinkList &L,int i,int e){ //在链表中的第i个位置插入元素e
if(i<1){
return false;
}
LNode *p=L; //L指向头结点,头结点是第0个结点(不存数据)
int j=0; //当前p指向的是第几个结点
while(p!=NULL &&j<i-1){ //找到第i-1个结点将其插入其后
j++
}
LNode *s=(LNode*)malloc(sizeof(LNode)); //开辟个空间s 插入链表中
s->data=e;
s->next=p->next;
p->next==s;
return true;
}
不带头结点的按位序插入
bool ListInsert(LinkList &L,int i,int e){
if(i==1){ //i=1时单独处理
LNode *s=(LNode*)malloc(sizeof(LNode));
s->data=e;
s->next=L;
L=s;
return true;
}
LNode *p;
int j=1; //当前p指向的是第几个结点
p=L;
while(p!=NULL &&j<i-1){
p=p->next;
j++
}
LNode *s=(LNode*)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next==s;
return true;
}
指定结点的后插操作
bool InsertNextNode(LNode *p,int e){
if(p==NULL)
return false;
LNode *s=(LNode*)malloc(sizeof(LNode));
if(s==NULL)
return false;//内存分配失败
s->data=e;
s->next=p->next;
p->next=s; //结点s连接到p之后
return true;
}
指定结点的前插操作
bool InsertNextNode(LNode *p,int e){
if(p==NULL)
return false;
LNode *s=(LNode*)malloc(sizeof(LNode));
if(s==NULL)
return false;//内存分配失败
s->next=p->next; //先按原先插入p后面,然后将s结点值等于p的值,p的值未e
p->next=s;
s->data=p->data;
p->data=e;
return true;
}
按位序删除(带头结点)
bool ListDelete(LinkList &L,int i,int e){
if(i<1){
return false;
}
LNode *p; //指针p指向当前扫描到的结点
int j=0; //当前p指向的是第几个结点
p=L; //L指向头结点,头结点是第0个结点(不存数据)
while(p!=NULL &&j<i-1){ //循环找到第i-1个结点
p=p->next;
j++
}
if(p==NULL)
return false;
//----关键代码
LNode *q=p->next;
e=q->data;
p->next=q->next;
free(q);
return true;
}
删除指定的结点
单链表的按位查找
单链表的按值查找
求表的长度