C语言单链表简单实现(简单程序复杂化)
2019-09-23 08:45:29来源:博客园 阅读 ()
C语言单链表简单实现(简单程序复杂化)
PS: goto还是很好玩的。 #include <stdio.h> #include <stdlib.h> typedef struct _node{ int value; struct _node *next; } Node; typedef struct _list{ Node* head; }List; void add(List* plist,int number); void print(List* list); void deletel(List* list,int number); void freel(List* list); int main(int argc, char *argv[]) { Node *head = NULL; List list; int number=0; list.head=NULL; for(;;){ printf("\n这是一个链表,现有如下功能 1.添加节点 2.遍历链表 3.查找并删除节点 4.释放链表 5.退出程序 \n请输入你想要进行的操作的选项:\n" ); out: scanf("%d",&number); switch(number){ case 1: printf("你选择了添加节点\n请输入添加节点的值,输入-1结束添加\n"); do{ scanf("%d",&number); if(number != -1){ //添加一个新的节点挂载。 add(&list,number); } }while(number != -1); printf("添加完毕"); break; case 2: printf("你选择了遍历链表\n"); //打印链表 print(&list); break; case 3: printf("你选择了查找并删除节点,请输入节点数据\n"); scanf("%d",&number); //删除一个节点 deletel(&list,number); break; case 4: printf("你选择了释放链表"); //释放链表 freel(&list); printf("释放完毕"); break; case 5: goto end; default : printf("输入错误,请重新输入\n"); goto out; } } end: printf("拜拜"); return 0; } void add(List* plist,int number){ Node *p =(Node*)malloc(sizeof(Node)); p->value =number; p->next =NULL; Node *last =plist->head; if(last){ while(last->next){ last = last->next; } last->next=p; }else{ plist->head = p; } } //遍历链表 void print(List* list){ Node *p; for(p=list->head;p;p=p->next){ printf("%d\t",p->value); } printf("\n"); } //查找并删除节点 void deletel(List* list,int number){ Node* p; int isFound =0; for(p=list->head;p;p=p->next){ if(p->value==number){ printf("找到了\n"); isFound = 1; break ; } } if(!isFound){ printf("没找到"); } Node *q; for(q=NULL,p=list->head;p;q=p,p=p->next){ if(p->value==number){ if(q){ q->next = p->next; }else{ list->head=p->next; } free(p); printf("已经删除"); break ; } } } //释放链表 void freel(List* list){ Node *q; Node* p; for(p=list->head;p;p=q){ q=p->next; free(p); } }
读书和健身总有一个在路上
原文链接:https://www.cnblogs.com/Renqy/p/11571678.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:handy网络库源码阅读
下一篇:C++类的this指针详解
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C语言程序结构 2020-05-31
- 每日干货丨C++语言主流开发工具推荐! 2020-04-28
- C语言实现经典游戏——扫雷! 2020-04-17
- 加边的无向图--并查集 2020-04-10
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