C语言中数据结构中的单向链表的问题;

2020-06-23 教育 71阅读
#include "stdlib.h"
#include "stdio.h"
//链表的类型定义
typedef struct node
{
int data; //值域
struct node *link; //指针域
}*PNode,*LinkList;
//typedef struct node *PNode;
//typedef struct node *LinkList;
//创建空链表
LinkList createNullist_link(void)
{
LinkList list=(LinkList)malloc(sizeof(struct node));//申请表头结点空间
if(list!=NULL) list->link=NULL;
else printf("Out of space!\n");//创建失败
return(list);
}
//判断空链表
int isNullist_linkq(LinkList list)
{
return(list->link==NULL);
}
//在单链表中求某元素的存储位置
PNode locate_link(LinkList list,int x)
{//在list 带有头结点的单链表中找第一个值为x的结点存储位置
PNode p;
if(list->link==NULL) return(NULL);
p=list->link;
while(p!=NULL && p->data!=x) p=p->link;
return(p);
}
// 单链表的插入
int insertPost_link(LinkList list,PNode p,int x)
{//在list 带有头结点的单链表中,p所指结点后面插入元素x
PNode q=(PNode )malloc(sizeof(struct node));
if(q==NULL)
{
printf("Out of space!!!\n");
return(0);
}
else
{
q->data=x;
q->link=p->link;
p->link=q;
return(1);
}
}
// 在单链表求p所指结点的前驱结点
PNode locatePre_link(LinkList list,PNode p)
{
PNode p1;
if(list->link==NULL) return(NULL);
while(p1!=NULL && p1->link!=p) p1=p1->link;
return(p1);
}
// 单链表的删除
int insertPost_link(LinkList list,int x)
{//在list 带有头结点的单链表中删除第一个值为x的结点
PNode p,q ;
p=list;
if(p->link==NULL) return(0);
while(p->link!=NULL && p->link->data!=x)
p=p->link;//找值为x的结点的前驱结点的存储位置
if(p->link==NULL) //没找到值为x的结点
{
printf("Not exist!\n");
return(0);
}
else
{
q=p->link;
p->link=q->link;
free(q);
return(1);
}
}
void main()
{
int i,x;
PNode p;
LinkList list1;
list1=createNullist_link();
if(list1!=NULL)
printf("创建空表成功!\n");
p=list1;
for(i=0;i<5;i++)
{
printf("请输入第 %d 个结点的值:",i+1);
scanf("%d",&x);
insertPost_link(list1,p,x);
p=p->link;
}
printf("\n");
p=list1->link;
while(p!=NULL)
{
if(p->link==NULL)
printf("%d",p->data);
else
printf("%d->",p->data);
p=p->link;
}
printf("\n");
printf("请输入删除结点的值:",i+1);
scanf("%d",&x);
insertPost_link(list1,x);
printf("\n");
p=list1->link;
while(p!=NULL)
{
if(p->link==NULL)
printf("%d",p->data);
else
printf("%d->",p->data);
p=p->link;
}
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com