数据与结构-单链表
2022/6/13 23:22:12
本文主要是介绍数据与结构-单链表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct node { ElemType date;//数据域 struct node *next;//指针域 }LNode,*LinkList; //用尾插法建立链表 LinkList Creat_LinkList1() { LinkList H,r,s; H=(LNode*)malloc(sizeof(LNode));//初始化链表 H->next=NULL; int x; r=H; printf("请输入数据作为结点用-1,暂停:\n"); scanf("%d",&x); while(x!=-1) { s=(LNode*)malloc(sizeof(LNode)); s->date=x; s->next=r->next; r->next=s; r=s; scanf("%d",&x);//-1表示结束生成子结点 } r->next=NULL; return H; } //单链表的查找 LinkList Get_LinkList(LinkList H,int k) { LinkList p=H; int j=0; while(p->next!=NULL&&j<k) { p=p->next; j++; } if(j==k) return p; else return NULL; //没找到,位置错误 } LinkList Get_LinkList1(LinkList H,int k) { LinkList p=H; int j=0; while(p->next!=NULL&&j<k) { p=p->next; j++; } if(j==k) return p->date; else return NULL; //链表的插入 } int Insert_LinkList(LinkList H,int i,ElemType x)//依次输入待插入的链表,插入位置,插入的元素 { LinkList p,s; p=Get_LinkList(H,i-1);//调用按值查找位置函数* if(p==NULL) { printf("插入位置错误!"); return -1;//返回-1表示输入位置错误 } else { s=(LinkList)malloc(sizeof(LNode)); s->date=x; s->next=p->next; p->next=s; return 1;//返回1表示插入成功 } } //删除节点元素 int Del_LinkList(LinkList H,int i) { LinkList p,q; p=Get_LinkList(H,i-1); q=p->next; p->next=q->next; free(q); return 1; } //判断表是否为空 int ListEmpty(LinkList H) { if(H->next==NULL) return -1; else return 1; } //计算表长 int length_LinkList(LinkList H) { LNode *p=H; int j=0; while(p->next!=NULL) { p=p->next; j++; } return j; } //清空表 LinkList ClearList(LinkList H) { H->next=NULL; } void output(LinkList H) { LinkList p; p=H->next; while(p!=NULL) { printf("%3d",p->date); p=p->next; } printf("\n"); } int main() { LinkList H1; int num,i,k; H1=Creat_LinkList1(); //初始化并且建立链表 output(H1); printf("请输入待插入数据的位置:\n"); scanf("%d",&i); printf("请输入待插入数据:\n"); scanf("%d",&k); Insert_LinkList(H1,i,k); output(H1); printf("请输入待删除的位置:\n"); scanf("%d",&i); Del_LinkList(H1,i); output(H1); printf("请输入待查找的位置:"); scanf("%d",&i); num=Get_LinkList1(H1,i); printf("该元素是:%d\n",num); printf("请输入你想取元素的位置:\n"); scanf("%d",&i); num=Get_LinkList1(H1,i); printf("这个元素的值为:%d\n",num); printf("判断表是否为空:\n"); num=ListEmpty(H1); printf("判断结果为%d,负数为空,正数为非空\n",num); num=length_LinkList(H1); printf("表长为:%d\n",num); ClearList(H1); printf("表已经被清空!\n"); num=length_LinkList(H1); printf("表长为:%d\n",num); }
这篇关于数据与结构-单链表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?