⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a.cpp

📁 实现单链表的清空
💻 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 + -