本文主要是介绍单链表核心操作代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
头插法建立单链表
代码:
void createListByHead(LinkList &L,int n){LNode *s;//移动指针s int x;//要插入的元素 L = (LinkList)malloc(sizeof(LNode));//创建头结点 L->next=NULL;//初始化头结点 for(int i=0;i<n;i++){scanf("&d",&x);//输入要插入的值 s=(LNode*)malloc(sizeof(LNode));//创建要插入的节点 s->data=x;//将要插入的值,赋给插入的节点 //头插法插入 s->next=L-next;L->next=s;}
}
尾插法建立单链表
代码:
void createListByTail(LinkList &L,int n){LNode *s,*r=L;//移动指针s和表尾指针r int x;//要插入的元素 L = (LinkList)malloc(sizeof(LNode));//创建头结点 for(int i=0;i<n;i++){scanf("%d",&x);s=(LNode*)malloc(sizeof(LNode));//创建要插入的节点 s->data=x;//将要插入的值,赋给插入的节点 //尾插法插入r->next=s;r=s;}r->next=NULL;//最后尾指针置空
}
按序号插找节点
代码:
LNode* getElemBypos(LinkList L ,int i){if(i==0) return L;//i为0,返回头结点 if(i<0) return NULL;//i小于0,返回空 int count =1;//计数,从1开始 LNode* p=L->next;//指向第一个节点 while(p!=NULL&&count<i){//遍历链表 p=p->next;count ++;} return p;//返回找到的节点
}
按值查找节点
代码:
LNode* locateElemByvalue(LinkLinst L,ElemType e){LNode* p=L->next;//指向第一个元素 while(p!=NULL&&p->data!=e){//遍历链表 p=p->next;} return p;//返回找到的节点
}
求有头节点的单链表长度
代码:
int length(LinkList L){int len=0;LNode* p=L->next;while(p!=NULL){len++;p=p->next;}return len;
}
将值为x的节点插入到单链表的第i个位置
代码:
bool InsertNode(LinkList L,int i,ElemType x){LNode* p;int count=0p=L;while(p!=NULL && count<i-1){//找到第i-1个值 p=p->next;count++;}if(p==NULL) return false;//i值不合法 LNode* s=(LNode*)malloc(sizeof(LNode));s->data=x;x->next=p->next;p->next=s;return true;}
将单链表的第i个位置上的节点删除
代码:
bool deleteNode(LinkList &L,int i,ElemType e){LNode* p=L;int count=0;while(p != NULL && count<i-1){//找到第i个值 p=p->next;count++;}if(p==NULL || p->next==NULL){//i值不合法 return false;}LNode* s=p->next;//临时指针,指向要删除的节点 e=s->data;p->next=s->next;//将要删除的取下来 free(s);//释放空间 return true;
}
这篇关于单链表核心操作代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!