C语言链表基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//链表操作:建立、插入、删除、查找、倒置、删除等基本操作//喜洋洋制作
#include
#include
typedefstruct LNode
{
int data;
struct LNode *next;
}LNode,*Llist;
LNode *creat_head();//创建一个空表
void creat_list(LNode *,int);//创建一个长度为n的线性链表void insert_list(LNode *,int,int);//插入一个元素
int delete_list(LNode *,int);//删除一个元素
int found_list(LNode *,int);//链表查询
void reverse(LNode *);//倒置整个链表
void delete_whole(LNode *);//删除整个链表
void print_list(LNode *);//打印链表
main()
{
LNode *head;
int n,n2;
int x,i;
int b;
char temp1,temp2;
head=creat_head();
printf("请输入链表的节点个数n=");
scanf("%d",&n);
printf("\n请输入数据:\n");
creat_list(head,n);//创建链表
print_list(head);
printf("\n********************************************************* \n");
printf("\n下面进行链表插入元素\n");
printf("\n请输入您需要插入的元素x=");
scanf("%d",&x);
printf("\n请输入即将插入的位置i=");
scanf("%d",&i);
insert_list(head,x,i);//插入元素
print_list(head);
printf("\n********************************************************* \n");
printf("\n下面进行链表删除元素\n");
printf("\n请输入即将删除元素的位置:i=");
scanf("%d",&i);
b=delete_list(head,i);//删除元素
print_list(head);
printf("\n\n成功删除元素:%d",b);
printf("\n********************************************************* \n");
printf("\n下面进行链表查询\n");
printf("\n请输入即将查询的元素:x=");
scanf("%d",&n2);
if(found_list(head,n2)>0) //链表查询
printf("找到了,在第%d的位置上",found_list(head,n2));
else
printf("没有找到!");
printf("\n********************************************************* \n");
printf("\n是否倒置整个链表?Y/N\n");
fflush(stdin);
scanf("%c",&temp1);
if('Y'==temp1) //倒置链表
{
reverse(head);
print_list(head);
}
printf("\n********************************************************* \n");
printf("\n是否删除整个链表?Y/N\n");
fflush(stdin);
scanf("%c",&temp2);
if('Y'==temp2) //删除链表
{
delete_whole(head);
printf("\n成功删除整个链表\n");
}
}
//创建一个空链表
LNode *creat_head()
{
LNode *p;
p=(Llist)malloc(sizeof(LNode));
if(NULL==p)
printf("内存申请失败!");
else
{
p->next=NULL;
return(p);
}
}
//创建一个长度为n的线性链表
void creat_list(LNode *head,int n)
{
LNode *p,*q;
int i;
p=head;
for(i=1;i<=n;i++)
{
q=(Llist)malloc(sizeof(LNode));
if(NULL==p)
printf("内存申请失败!");
else
{
printf("data:");scanf("%d",&q->data);
q->next=NULL;
p->next=q;
p =q;