链表内容:
建立含有若干个元素的链表,并将结果在屏幕上输出。对刚建立的链表实现插入、删除、修改、查找,并将结果在屏幕上输出。
链表建立:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define DataType char
typedef struct node
{
DataType data;
struct node *next;
}LNode,*LinkList;
//init
LinkList Init_LinkList()
{
LinkList head;
head=(LNode *)malloc (sizeof (LNode));
head->next=NULL;
return head;
}
//hcreate
LinkList HCreat_LinkList()
{
LinkList head=Init_LinkList();
LNode *p;
char x;
while((x=getchar())!='\n')
{
p=(LNode *)malloc(sizeof(LNode));
p->data=x;
p->next=head->next;
head->next=p;
}
return head;
}
//rcreate
LinkList RCreat_LinkList()
{
LinkList head=NULL;
LNode *p,*r=NULL;
char x;
p=(LNode *)malloc(sizeof(LNode));
head=p;
r=p;
p->next=NULL;
while(x=getchar()!='\n')
{
p=(LNode*)malloc(sizeof(LNode));
p->data=x;
r->next=p;
r=p;
}
if(r!=NULL)r->next=NULL;
return head;
}
//length
int Length_LinkList(LinkList head)
{
int i;
LNode *p;
p=head;
i=0;
while(p->next!=NULL)
{
p=p->next;
i++;
}
return i;
}
//get
LNode *Get_LinkList(LinkList L,int i)
{
LNode *p=L;
int j=0;
while(p->next!=NULL && j<i)
{
p=p->next;
j++;
}
if(j==i)
return p;
else
return NULL;
}
//locate
LNode *Locate_LinkList(LinkList L,DataType x)
{
LNode *p=L->next;
while(p!=NULL && p->data!=x)
p=p->next;
return p;
}
//empty
int Empty(LinkList head)
{
if(head->next==NULL)
return 1;
else
return 0;
}
//delete
int Del_LinkList(LinkList L,int i)
{
LNode *p,*q;
if(!Empty(L))
{
p=Get_LinkList(L,i-1);
if(p==NULL)
return -1;
else
if(p->next==NULL)
return 0;
else
{
q=p->next;
p->next=q->next;
free(q);
return 1;
}
}
}
//insert
int Insert_LinkList(LinkList L,int i,DataType x)
{
LNode *p,*s;
p=Get_LinkList(L,i-1);
if(p==NULL)
{
printf("参数错");
return 0;
}
else
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=p->next;
p->next=s;
}
return 1;
}
void Print(LinkList head)
{
LNode *p;
p=head->next;
while(p)
{
printf("%c ",p->data);
p=p->next;
}
}
void main()
{
LinkList head;
LNode *p;
int i;
char x;
head=HCreat_LinkList();
Print(head);
scanf("%d",&i);
p=Get_LinkList(head,i);
printf("%c",p->data);
scanf("%d%c",&i,&x);
Insert_LinkList(head,i,x);
Print(head);
scanf("%d",&i);
Del_LinkList(head,i);
Print(head);
printf("%d",Length_LinkList(head));
i=1;
while(!Empty(head))
Del_LinkList(head,i);
if(Empty(head))
printf("已空");
}
运行结果:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!