C语言链表基本操作 下载本文

//链表操作:建立、插入、删除、查找、倒置、删除等基本操作 //喜洋洋制作 #include #include typedefstructLNode {

intdata;

structLNode *next;

}LNode,*Llist;

LNode *creat_head();//创建一个空表

void creat_list(LNode *,int);//创建一个长度为n的线性链表 voidinsert_list(LNode *,int,int);//插入一个元素 intdelete_list(LNode *,int);//删除一个元素 intfound_list(LNode *,int);//链表查询 void reverse(LNode *);//倒置整个链表 voiddelete_whole(LNode *);//删除整个链表 voidprint_list(LNode *);//打印链表 main() {

LNode *head; int n,n2;

intx,i; int b;

char temp1,temp2; head=creat_head();

printf(\请输入链表的节点个数n=\scanf(\

printf(\\\n请输入数据:\\n\creat_list(head,n);//创建链表

print_list(head);

printf(\\\n*********************************************************

\\n\

printf(\\\n下面进行链表插入元素\\n\printf(\\\n请输入您需要插入的元素x=\scanf(\

printf(\\\n请输入即将插入的位置 i=\scanf(\

insert_list(head,x,i);//插入元素 print_list(head);

printf(\\\n*********************************************************\\n\

printf(\\\n下面进行链表删除元素\\n\printf(\\\n请输入即将删除元素的位置:i=\

scanf(\

b=delete_list(head,i);//删除元素 print_list(head);

printf(\\\n\\n成功删除元素:%d\

printf(\\\n*********************************************************\\n\

printf(\\\n下面进行链表查询\\n\printf(\\\n请输入即将查询的元素:x=\scanf(\

if(found_list(head,n2)>0) //链表查询

printf(\找到了,在第%d的位置上\

else

printf(\没有找到!\

printf(\\\n*********************************************************\\n\

printf(\\\n是否倒置整个链表?Y/N\\n\

fflush(stdin);

scanf(\if('Y'==temp1) //倒置链表

{

reverse(head);

print_list(head);

}

printf(\\\n*********************************************************\\n\

printf(\\\n是否删除整个链表?Y/N\\n\fflush(stdin);

scanf(\if('Y'==temp2) //删除链表

{

delete_whole(head);

printf(\\\n成功删除整个链表\\n\} }

//创建一个空链表 LNode *creat_head() {

LNode *p;

p=(Llist)malloc(sizeof(LNode));

if(NULL==p)

printf(\内存申请失败!\

else {