📄 a.cpp
字号:
#include<stdio.h>
#define NULL 0
#define LEN sizeof(struct LNode)
main()
struct LNode{
int data;
struct LNode *next;
}LNode,*LinkedList; //定义单链表的结点类型
int n,*L;
LinkedList LinkedListInit();
//对初始化函数的声明
void LinkedListclear(LinkedList L);
//对清空函数的声明
int LinkedListEmpty(LinkedList L);
//对检查单链表是否为空的声明
void LinkedListTraverse(LinkedList L);
//对遍历函数的声明
int LinkedListLength(LinkedList L);
//对求单链表长度函数的声明
int LinkedListGet(LinkedList L,int i);
//对查找函数的声明
int LinkedListLocate(LinkedList L,DataType x);
//对查找位置的函数的声明
void LinkedListInsert(LinkedList L,int i,DataType x);
//对插入函数的声明
void LinkedListDel(LinkedList L,DataType x);
//对删除函数的声明
LinkedList LinkedListCreat();
//对建立链表函数的声明
LinkedList LinkedListInit(); {
//初始化单链表
int L.elem,L.length,L.listsize;
L.elem=(struct LNode*)malloc(LEN);
if(!L>Elem) // 存储分配失败
return 0;
L.length=0; //空表长度为0
L.listsize=LEN; //初始化存储容量
return 1;
}
void LinkedListclear(LinkedList L);{
//清空单链表
int *p;
L=NULL; //定义L为头结点
p=L->next; //初始化,p指向第一个结点
while(p)
{p=p->next;
p->data=NULL;
}
}
int LinkedListEmpty(LinkedList L){
//检查单链表是否为空
int *p;
L=NULL; //定义L为头结点
p=L->next; //初始化,p指向第一个结点
while(p)
{
if(p->data==NULL) //当结点的数据为空时继续检查
p=p->next;
else
return 0;
}
}
void LinkedListTraverse(LinkedList L){
//遍历单链表
int *p;
int visit(int x); //对函数的声明
L=NULL;
p=L->next; //初始化,p指向第一个结点
while(p) //依次对L的每一个数据调用函数visit
{visit(p->data);
p=p->next;
}
int visit(int x); //依次用L的每一个数据减2
{int y=2;
x=x-y;
}
}
int LinkedListLength(LinkedList L){
//求单链表的长度
int *p,i;
L=NULL; //定义L为头结点
i=0; //i为记数器
while(p)
{p=p->next;
++i;
}
printf("%d",i);
}
int LinkedListGet(LinkedList L,int i){
//从单链表中查找元素
int i,j,*p,e;
L=NULL; //定义L为头结点
j=1;
p=L->next;
scanf("%d",&i); //输入查找元素的位置
while(p&&j<i)
{p=p->next; //指针后移
++j;}
if(!p||j>i) return 0;
else
e=p->data;
return 1;
}
}
int LinkedListLocate(LinkedList L,DataType x);{
//从单链表中查找与给定元素值相同的元素在单链表中的位置
int j,x,e;
j=1;
L=NULL;
p=l->next;
scanf("%d",&x);
while(p&&p->data!=x)
{p=p->next;
++j;}
if(!p)
return 0;
else
if(p->data==x)
printf("%d",j);
}
}
void LinkedListInsert(LinkedList L,int i,DataType x);{
//向单链表中插入元素
int j,*p,*s;
L=NULL;
p=L;j=0;
scanf("%d,%d",&i,&x);
while(p&&j<i-1) //查找插入的位置
{p=p->next;
++j;
}
if(!p||j>i-1)
break;
s=(LinkList)malloc(LEN);
s->data=x;
s->next=p->next;
p->next=s;
}
}
void LinkedListDel(LinkedList L,DataType x);{
//从单链表中删除元素
int x,*p1,*p2,e;
L=NULL;
scanf("%d",&x);
p1=p2=L;
while(p1->next&&p1->data!=x)
{p1=p1->next;}
if(!(p1->next))
printf("The node can not be found!");
else
if(p1->data==x)
{p2=p1->next;
p1->next=p2->next;
e=p2->data;
free(p2);
}
}
LinkedList LinkedListCreat(){
//用尾插法建立单链表
int *L,*p1,*p2;
n=0;
L=NULL; //定义L为头结点
p1=(struct LNode*)malloc(LEN); //建立第一个新结点
scanf("%d",&p->data);
p1->next=NULL;
while(p1->data!=0)
{++n;
if(n==1) L=p1; //第一个结点作表头
else
{p2->next=p1;
p1=(struct LNode*)malloc(LEN);
scanf("%d",&p->data);
p1->next=NULL;
}
free(p1); //释放最后一个结点所占的内存
return(L); //返回表头
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -