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);
}
}
读书和健身总有一个在路上
C语言单链表简单实现(简单程序复杂化)的更多相关文章
- 单链表数据结构 - java简单实现
链表中最简单的一种是单向链表,每个元素包含两个域,值域和指针域,我们把这样的元素称之为节点.每个节点的指针域内有一个指针,指向下一个节点,而最后一个节点则指向一个空值.如图就是一个单向链表 一个单向链 ...
- C语言单链表实现19个功能完全详解
谢谢Lee.Kevin分享了这篇文章 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将 ...
- C语言—单链表
单链表操作:读取,插入和删除 #include "stdafx.h" #include <string.h> #include <stdio.h> #inc ...
- C语言——单链表初始化、求表长、读表元素、插入元素
头文件Linear.h // 单链表的类型定义 typedef struct node { int data; // 数据域 struct node *next; // 指针域 }Node, *Lin ...
- c语言-单链表(二)
继续复习链表知识点,本章包含单链表的增加,删除,判断是否为空,和链表长度,以及链表的排序 几个知识点 1.链表的判断是否为空 //1.判断链表是否为空 bool isempty_list(PNODE ...
- c语言单链表实现
/************************************************************************* > File Name: singleLin ...
- C语言单链表的实现
// // main.c // gfhjhgdf // // Created by chenhao on 13-12-23. // Copyright (c) 2013年 chenhao. A ...
- 零基础玩转C语言单链表
下图为最一简单链表的示意图: 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量.以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 n ...
- c语言-单链表(一)
定义节点: typedef struct Node { int data; Node* pNext; }NODE, *PNODE; 细节说明,PNode 就代表struct Node* ,上面的表单是 ...
随机推荐
- [CSS] prefers-reduced-motion
The prefers-reduced-motion CSS media feature is used to detect if the user has requested that the sy ...
- LeetCode 958. Check Completeness of a Binary Tree
原题链接在这里:https://leetcode.com/problems/check-completeness-of-a-binary-tree/ 题目: Given a binary tree, ...
- echo如何输出带颜色的文本
本文链接:https://blog.csdn.net/qualcent/article/details/7106483 ######################################## ...
- a list of frequently asked questions about Circus
转自:https://circus.readthedocs.io/en/latest/faq/,可以帮助我们了解circus 的使用,以及问题解决 How does Circus stack comp ...
- 【JZOJ6217】【20190614】最大面积
题意 平面上有\(n\)个点\(A_i\),\(q\)次询问,每次给出一个点\(P\),求: \[ \sum_{i=L}^{R} 2S_{\triangle OPA_i} \] 最大值,其中$S_{\ ...
- (转载)golang 整数常量INT_MAX INT_MIN最大值最小值
转载地址:https://blog.csdn.net/bdss58/article/details/78388858 在C语言中,有标准库limits.h定义了一些最大最小值常量,例如int类型的最大 ...
- Vue 打包部署到服务器后,非主页刷新后出现404问题解决
开心把项目部署到服务上,从头到尾点了一遍,发现没有问题,以为就可以大功告成,没想到刷新页面时出现 被破泼了一脸的凉水,更奇怪的事首页没有问题,只有其他页面出现,在调戏了很久的度娘后,才从坑里跳出来,以 ...
- 去掉 vue 的 "You are running Vue in development mode" 提示
去掉 vue 的 "You are running Vue in development mode" 提示 在项目的 main.js 中已经配置了 Vue.config.produ ...
- mysql索引原理及优化(三)
B+Tree原理详解 MyISAM中的 B+Tree (非聚簇索引) MYISAM中叶子节点的数据区域存储的是数据记录的地址 主键索引 辅助索引 MyISAM存储引擎在使用索引查询数据时,会先根据索引 ...
- android -------- 解决RecyclerView显示不全只显示一条item的问题
布局文件1 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android= ...