链表基本操作记录
程序员文章站
2024-01-30 16:26:46
...
链表基本操作记录
单链表的基本操作
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
int InitList(LinkList &L){ //创建空链表
L =new LNode;
L->next=NULL;
return 1;
}
int DestroyList(LinkList &L){ //销毁链表
LNode *temp;
while(L){
temp=L->next;
free(temp);
L=temp;
}
return 1;
}
int ListEmpty(LinkList L){ //链表判空
if(L)
return 1;
else
return 0;
}
int ListInsert(LinkList &L,int i,int e){ //插入操作
LinkList P = L;
LinkList temp;
int j=0;
while(P&&j<i-1) {
P=P->next;
++j;
}
if(!P||j>i-1)
return 0;
temp=(LNode*)malloc(sizeof(LNode));
temp->data=e;
temp->next=P->next;
P->next=temp;
return 1;
}
int ListDelete(LinkList &L,int i,int &e){ //删除操作
int j=0;
LinkList p=L,q;
while(p->next&&j<i-1){
p=p->next;
++j;
}
if(!(p->next)||j>i-1)
return 0;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return e;
}
int ListLength(LinkList L){ //求链表长
int len=0;
while(L) {
++len;
L=L->next;
}
return len;
}
int GetElem(LinkList L,int i,int &e){
int j=1,len;
len=ListLength(L);
if(i<1||!L||i>len)
return 0;
else{
while(L){
if(j==i){
e=L->data;
return e;
}
else{
j++;
L=L->next;
}
}
return e;
}
}
int LocateElem(LinkList L,int e){
int j=1;
while(L) {
if(L->data==e)
return j;
j++;
L=L->next;
}
return 0;
}
int PrintfList(LinkList L){
if(!L){
printf("List L is empty\n");
return 0;
}
while(L){
printf("%d ",L->data);
L=L->next;
}
printf("\n");
return 1;
}
int main(){
//主函数略。
}
上一篇: Multipath多路径安装配置
下一篇: GIT基本操作记录