基本信息
源码名称:c++ 单链表(入门级)
源码大小:2.64KB
文件格式:.cpp
开发语言:C/C++
更新时间:2020-09-12
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
//2020年9月9日
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
typedef char ElemType;
//存储结构描述
typedef struct Node
{
ElemType data;
struct Node* next;
}Node,*LinkList;
//初始化单链表
InitList(LinkList *L)
{
*L=(LinkList)malloc(sizeof(Node)); //建立头结点
(*L)->next=NULL; //建立空的单链表L
}
//头插法建立单链表
void CreatFromHead(LinkList L)
{
Node *s;
int flag=1;
char c;
while(flag)
{
c=getchar();
if(c!='$')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
s->next=L->next;
L->next=s;
}
else flag=0;
}
}
//尾插法建立单链表
void CreatFromTail(LinkList L)
{
printf("尾插法建立单链表,请输入字符:");
Node*s,*r;
char c;
r=L;
int flag=1;
while(flag)
{
c=getchar();
if(c!='$')
{
s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=NULL;
}
}
}
//输出单链表
void DispList(LinkList L)
{
LinkList p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
}
//按序号查找
Node* Get(LinkList L,int i)
{
int j;
Node *p;
if(i<=0) return(NULL);
p=L;j=0;
while((p->next!=NULL)&&(j<i))
{
p=p->next;
j ;
}
if(i==j) return p;
else return(NULL);
}
//按值查找
Node* Locate(LinkList L,ElemType key)
{
Node *p;
p=L->next;
while(p!=NULL)
if(p->data!=key)
p=p->next;
else break;
return p;
}
//求单链表长度
int ListLength(LinkList L)
{
int j;
Node *p;
p=L->next;
j=0;
while(p!=NULL)
{
p=p->next;
j ;
}
return j;
}
//单链表插入
int InsList(LinkList L,int i,ElemType e)
{
Node *pre,*s;
int k;
if(i<=0) return ERROR;
pre=L; k=0;
while(pre!=NULL&&k<i-1)
{
pre=pre->next;
k=k 1;
}//查找i-1个节点
if(pre==NULL)
{
printf("插入位置不合理");
return ERROR;
}
s=(Node*)malloc(sizeof(Node));
s->data=e;
s->next=pre->next;
pre->next=s;
return OK;
}
//单链表合并
LinkList merge(LinkList LA,LinkList LB)
{
Node *pa,*pb;
LinkList LC;
pa=LA->next;
pb=LB->next;
LC=LA;
LC->next=NULL;
r=LC;
while(pa!=NULL&&pb!=NULL)
{
if(pa->data=pb->data)
{r->next=pa;r=pa;pa=pa->next;}
else
{r-next=pb;r=pb;pb=pb->next;}
}
if(pa)
r->next=pa;
else
r->next=pb;
free(LB);
return LC;
}
void main ()
{
LinkList L,M;
InitList(&L);
// InitList(&M);
CreatFromHead(L);
// CreatFromTail(M);
DispList(L);
// DispList(M);
Get(L,2);
// Locate(M,b);
}
//https://blog.csdn.net/qq_41563828/article/details/84779576