数据结构学习之路02链表

链表初始化

typedef struct Lnode{
ElemType elem;
struct Lnode *next;
}Lnode;//定义结点
typedef Lnode *LinkList;
int InitList(LinkList &L){//初始化链表
L=(LinkList)malloc(sizeof(Lnode));
if(!L){
printf(“初始化失败!”);
exit(0);
}
L->next=NULL;//定义头结点为空
return OK;
}

创建含有n个结点的链表(头插法)

void CreateList(LinkList &L,int n){//定义了创建含有n个结点的链表的函数
InitList(L);//初始化链表L
printf(“请输入你想要创建的链表含有的结点的个数:”);
scanf("%d",&n);
for(int i=n;i>=1;i–){//使用头插法插入每个结点的信息
LinkList P=(Lnode *)malloc(sizeof(Lnode));
printf(“请输入信息:\n”);
scanf("%s%s%d",P->elem.no,P->elem.name,&P->elem.score);
P->next=L->next;
L->next=P;
}
}

创建含有n个结点的链表(尾插法)

void CreateList(LinkList &L,int n){
InitLinkList(L);
r=L;
for(i=1;i<=n;++i){
p=(LinkList)malloc(sizeof(Lnode));
输入elem
p->next=NULL;
r->next=p;
r=p;
}
}

链表输出

void DisplayList(LinkList L){//定义了显示链表信息的函数
LinkList P;
P=L;
while(P->next){
P=P->next;//遍历链表,显示链表的信息
printf("%s\t%s\t%d\n",P->elem.no,P->elem.name,P->elem.score);
}
printf("\n");
}

链表读取某个位置的值

int GetElem(LinkList L,int i,ElemType &e){//定义了获取链表中某个数据元素的函数
if(i<1)return ERROR;//检测读取的位置是否合理
LinkList P=L;
int j=0;
while(P->next&&j<i){
P=P->next;
++j;
}
if(j<i)return ERROR;//检测读取位置是否合理
e=P->elem;
return OK;
}

链表删除操作

int DeleteLinkList(LinkList &L,int i,ElemType &e){//定义了删除链表中某个数据元素的函数
if(i<1)return ERROR;//检测读取位置是否合理
LinkList P=L;
int j=0;
while(P->next&&j<i-1){
P=P->next;
j++;
}
if(!P->next)return ERROR;//检测读取位置是否合理
LinkList Q=P->next;
P->next=Q->next;
e=Q->elem;
free(Q);
return OK;
}

链表插入一个结点

int ListInsert(LinkList &L,int i,ElemType e){//定义了在链表中某个位置插入一个数据元素的函数
if(i<1)return ERROR;//检测读取位置是否合理
LinkList P=L;
int j=0;
while(P&&j<i-1){
P=P->next;
++j;
}
if(!P)return ERROR;//检测读取位置是否合理
LinkList S=(LinkList)malloc(sizeof(Lnode));//为插入的数据元素开辟空间
S->elem=e;
S->next=P->next;
P->next=S;
return OK;
}

有序链表的合并

void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){
pa=La->next;
pb=Lb->next;
pc=Lc=La;
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;
delete Lb;

发布了4 篇原创文章 · 获赞 0 · 访问量 26

猜你喜欢

转载自blog.csdn.net/luwanan/article/details/104879014