mysql增删改查链表_链表的增删改查

#include

#include

//先定义链表里面的元素。

typedef struct node{

int data;

struct node *next;

}MyNode;

//定义整个链表。

typedef struct link{

MyNode *head;//把head指向的元素定为第一个元素。

}MyLink;

int isEmpty_to_MyLink(MyLink *myLink);//判断链表是否为空。

int push_to_MyLinkInHead(MyLink *myLink,int m);//向链表头添加元素值为m的元素。

int insert_to_MyLink(MyLink *myLink,MyNode *myNode,int m);//向链表的myNode后面添加一个元素值为m的值。

int remove_to_MyLinkByValue(MyLink *myLink,int m);//删除链表中值为m元素。

int length_to_MyLink(MyLink *myLink);//判断链表的长度。

int isExistLoop_MyLink(MyLink *myLink);//判断链表是否有环。

void printMyLink(MyLink *myLink);//输出链表。

int isEmpty_to_MyLink(MyLink *myLink){

if (myLink->head==NULL) {

return 1;

}

return 0;

}

int push_to_MyLinkInHead(MyLink *myLink,int m){

MyNode *tempNode=malloc(sizeof(MyNode));

tempNode->data=m;

tempNode->next=myLink->head;

myLink->head=tempNode;

free(tempNode);

return 1;

}

int insert_to_MyLink(MyLink *myLink,MyNode *myNode,int m){

MyNode *tempNode=malloc(sizeof(MyNode));

tempNode->data=m;

tempNode->next=myNode->next;

myNode->next=tempNode;

free(tempNode);

return 1;

}

int remove_to_MyLinkByValue(MyLink *myLink,int m){

if (isEmpty_to_MyLink(myLink)) {

return 0;

}

int flag=0;

while ((myLink->head)&&(myLink->head->next)) {

if (myLink->head->next->data==m) {

myLink->head=myLink->head->next;

flag++;

}

}

if ((myLink->head)&&(myLink->head->data==m)) {

myLink->head=myLink->head->next;

flag++;

}

if (flag>0) {

return 1;

}

return 0;

}

int length_to_MyLink(MyLink *myLink){

int myLength=0;

while (myLink->head) {

myLink->head=myLink->head->next;

myLength++;

}

return myLength;

}

int isExistLoop_MyLink(MyLink *myLink){

MyNode *tempNodeA=malloc(sizeof(MyNode));

MyNode *tempNodeB=malloc(sizeof(MyNode));

tempNodeA=myLink->head;

tempNodeB=myLink->head;

while ((tempNodeB) && (tempNodeB->next)) {

tempNodeA=tempNodeA->next;

tempNodeB=tempNodeB->next->next;

if (tempNodeA==tempNodeB) {

return 1;

}

}

free(tempNodeA);

free(tempNodeB);

return 0;

}

void printMyLink(MyLink *myLink){

if (isEmpty_to_MyLink(myLink)) {

printf("链表为空\n");

return;

}

MyNode *myNode = myLink->head;

while (myNode) {

printf("%d , ",myNode->data);

myNode=myNode->next;

}

}

int main(int argc, const char * argv[])

{

//创建自己的链表。

MyLink *myLink = malloc(sizeof(MyLink));

myLink->head = NULL;

//创建自己链表中的元素。

MyNode *myNode = malloc(sizeof(MyNode));

myNode->next=NULL;

myNode->data=0;

//判断链表是否为空。

if (isEmpty_to_MyLink(myLink)) {

printf("空链表\n");

}

else{

printf("不是空链表\n");

}

//求得链表的长度。

printf("链表的长度为 %d\n",length_to_MyLink(myLink));

//向链表中指定位置插入一个元素。

int temp = 10;

//插入到链表的头部。

if (push_to_MyLinkInHead(myLink, temp)) {

printf("添加成功\n");

}

else{

printf("添加失败\n");

}

//求得链表的长度。

printf("链表的长度为 %d\n",length_to_MyLink(myLink));

printMyLink(myLink);

//删除某个值

if (remove_to_MyLinkByValue(myLink, temp)) {

printf("删除成功\n");

}

else{

printf("删除失败\n");

}

//判断链表是否有环。

if (isExistLoop_MyLink(myLink)) {

printf("存在环\n");

}

else{

printf("不存在环\n");

}

printMyLink(myLink);

//求得链表的长度。

printf("链表的长度为 %d\n",length_to_MyLink(myLink));

free(myLink);

free(myNode);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值