单链表的交并差
单链表的交并差-数据结构课程设计|数据结构课程设计#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define null 0
#define M 100
/*定义链表*/
typedef int ElemType;
typedef struct Lnode
{
ElemType data;
struct Lnode *next;
};
/*返回链表长度*/
int lenth(struct Lnode **L)
{
int n=0;
struct Lnode *t;
t=*L;
while(t!=null)
{
n++;
t=t->next;
}
return n;
}
/*返回指定节点的值*/
ElemType get(struct Lnode **L,int n)
{
int i=1;
struct Lnode *t;
t=*L;
while (i<n&&t!=null)
{
t=t->next;
i++;
}
if(t!=null)
{
return(t->data);
}
else
{
printf("The %dth Lnode haven't find !\n",n);
}
}
/*定位指定值的节点的位置*/
int locate(struct Lnode **L,ElemType x )
{
int n=1;
struct Lnode *t;
t=*L;
while (t!=null&&t->data!=x)
{
t=t->next;
n++;
}
if(t==null)
{
return(0);
}
else
{
return(n);
}
}
/*显示链表*/
void display(struct Lnode **L)
{
struct Lnode *t;
t=*L;
if(t==null)
{
printf("The link is null!");
}
else
{
do
{
printf("%d>>",t->data);
t=t->next;
}
while(t!=null);
}
printf("\n");
}
/*创建链表,并设置链表为空*/
void creat(struct Lnode **L)
{
*L=null;
}
/*向链表中插入元素*/
void insert(struct Lnode **L,int n,ElemType x)
{
/*插在第n个节点的前面*/
struct Lnode *t1,*t2;
int j=1;
t1=(struct Lnode *)malloc(sizeof(struct Lnode));
t1->data=x;
t2=*L;
if(n==1)
{
t1->next=t2;
*L=t1;
}
else
{
while(j<n-1&&t2->next!=null)
{
t2=t2->next;
j++;
}
if(j==n-1)
{
t1->next=t2->next;
t2->next=t1;
}
else
{
printf("Insert error!");
}
}
}
/*删除指定位置的节点*/
void delete(struct Lnode **L,int n)
{
int i=1;
struct Lnode *t1,*t2;
t1=*L;
if(n==1)
{
t2=t1;
*L=t1->next;
}
else
{
while(i<n-1&&t1->next!=null)
{
t1=t1->next;
i++;
}
if(t1->next!=null&&i==n-1)
{
t2=t1->next;
t1->next=t2->next;
}
else
{
printf("Delete error!\n");
}
}
if(t2==null)
{
free(t2);
}
}
/*初始化链表*/
void init(struct Lnode **L,int len)
{
int d[M],i,j,k,ti;
struct Lnode *t;
input:
for(i=1;i<=len;i++)
{
scanf("%d",&d[i]);
}
for(j=1;j<=len;j++)
for(k=j+1;k<=len;k++)
{
if(d[j]>d[k])
{
ti=d[j];
d[j]=d[k];
d[k]=ti;
}
}