单链表基本操作的实现
2019-10-08 08:47:28来源:博客园 阅读 ()
单链表基本操作的实现
插入节点图解
s->next = p->next;
p->next = s;
View Code
创建节点
1 typedef struct Lnode 2 { 3 ElemType data; 4 struct Lnode * next; 5 } Lnode,*LinkList;View Code
单链表的进本操作
1.创建链表
1 LinkList creatList() 2 { 3 LinkList L = (LinkList)malloc(sizeof(Lnode)); 4 LinkList Ptai = L; 5 Ptai->next=NULL; 6 L->next = NULL; 7 8 printf("input length:\n"); 9 scanf("%d",&L->data); 10 11 for(int i=1;i<=L->data;i++) 12 { 13 LinkList pnew = new Lnode; 14 printf("input %d data\n",i); 15 scanf("%d",&pnew->data); 16 17 Ptai->next = pnew; //尾插法 18 Ptai = pnew; 19 Ptai->next = NULL; 20 } 21 22 return L; 23 }View Code
2.遍历链表
1 void traverse(LinkList L) 2 { 3 LinkList p = L; 4 while(p->next!=NULL) 5 { 6 printf("%d ",p->next->data); 7 p=p->next; 8 } 9 printf("\n"); 10 }View Code
3.插入节点
Status insertList(LinkList L,int local,ElemType &e) { if(local<1||local>(L->data+1)) { printf("invalid input\n"); //判断插入的未知是否有效 return FALSE; } LinkList p = L; for(int i=1;i<local;i++) { p = p->next; } LinkList s = new Lnode; s->data = e; s->next = p->next; p->next = s; L->data++; //插入后长度加1 return TRUE; }View Code
4.删除节点
1 Status deleteList(LinkList L,int pos) 2 { 3 if(pos<1||pos>L->data) 4 { 5 printf("invalid input\n"); 6 return FALSE; 7 } 8 9 LinkList p = L; 10 for(int i=1;i<pos;i++) 11 { 12 p = p->next; 13 } 14 15 p->next = p->next->next; 16 L->data--; 17 18 return TRUE; 19 20 }View Code
5.单链表的取值
1 int getVal(LinkList L,int pos) 2 { 3 if(pos<1||pos>L->data) 4 { 5 printf("invalid input\n"); //判断查找的位置是否合理 6 return 0; 7 } 8 9 LinkList p = L; 10 for(int i=1;i<pos;i++) 11 { 12 p = p->next; 13 } 14 15 return p->next->data; //返回查找的值 16 }View Code
6.单链表的查找
1 int getPos(LinkList L,ElemType val) 2 { 3 LinkList p = L; 4 for(int i=1;i<=L->data;i++) 5 { 6 p = p->next; 7 if(p->data==val) 8 { 9 return i; //返回值的位置 10 } 11 12 if(i==L->data) 13 { 14 return 0; //若没找到,返回0 15 } 16 } 17 }View Code
原文链接:https://www.cnblogs.com/wwww2/p/11621589.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++冒泡排序 (基于函数模板实现) 2020-05-31
- opencv-12-高斯滤波-双边滤波(附C++代码实现) 2020-05-10
- 二叉排序树 2020-05-02
- 抽象宠物类的实现 代码参考 2020-04-29
- 虚函数实现多态性 代码参考 2020-04-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash