转贴:C语言链表基本操作
http://www.oschina.net/code/snippet_252667_27314#comments
这个代码有很多错误,估计是从老谭书上抄来但是很多还抄错了:对照老谭的书好好研究下。切记!
p2是p1的跟屁虫!切记
#include"stdio.h"
#include"malloc.h"
struct stu
{
int num;//这个是学号
float score;//这个是分数
struct stu *next;
};
struct stu*create()
{
int n;//这个n这里不大合适 ,最好弄个全局的
struct stu *head,*p1,*p2;
p1=p2=(struct stu*)malloc(sizeof(struct stu));
scanf("%d %f",&p1->num,&p1->score);
head=NULL;
n=0;
while(p1->num!=0)
{
n++;
if(n==1)head=p1;
else
{
p2->next=p1;
p2=p1;
p1=(struct stu*)malloc(sizeof(struct stu));
scanf("%d %f",&p1->num,&p1->score);
}
}
p2->next=NULL;
return head;
};
//难点在插入操作的实现上(默认从小到大排列的)
struct stu *insert(struct stu *head,struct stu *stud)
{
struct stu *p0,*p1,*p2;
p1=head;
p0=stud;
while((p0->num>p1->num)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num<p1->num)//能在队列中插入(不是尾巴)
{
if(head==p1)head=p0;//在头部前插入
else//在非头部插入
{
p2->next=p0;
p0->next=p1;
}
}
else//在尾巴插入
{
p1->next=p0;
p0->next=NULL;
}
//这个地方要怎么维护总的num呢 ?
return head;
};
//删除操作难度次之
struct stu *del(struct stu *head,int num)
{
struct stu *p1,*p2;
p1=head;
if(head!=NULL)
{
while((p1->num<num)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)//找到节点了
{ //这里要考虑删除头节点的情况
p2->next=p1->next;
p2=p1;
//要考虑删除的节点内存释放
//要考虑维护n的数目
}
else//没有找到节点
{
printf("NO Result!!!\n");
}
}
else
printf("The linklist is EMPTY\n");
return head;
};
void print(struct stu *head)
{
struct stu *p;
p=head;
while(p)
{
printf("%d %f\n",p->num,p->score);
p=p->next;
}
}
void main()
{
int n;
struct stu *create();
struct stu *insert(struct stu *head,struct stu *stud);
void print(struct stu *head);
struct stu *head,*p,*p1;
head=create();
p=head;
print(p);
printf("please input :\n");
scanf("%d %f",&p1->num,&p1->score);
p=insert(head,p1);
print(p);
printf("please input the del num:\n");
scanf("%d",&n);
p=del(head,n);
print(p);
}
转贴:C语言链表基本操作的更多相关文章
- ZT C语言链表操作(新增单向链表的逆序建立)
这个不好懂,不如看 转贴:C语言链表基本操作http://www.cnblogs.com/jeanschen/p/3542668.html ZT 链表逆序http://www.cnblogs.com/ ...
- c++学习笔记—单链表基本操作的实现
用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表).结点的查找.删除.排序.打印输出.逆置.链表销毁等基本操作. IDE:vs2013 具体实现代码如下: #include ...
- C语言SQLite3基本操作Demo
/************************************************************************** * C语言SQLite3基本操作Demo * 声 ...
- C语言链表实例--玩转链表
下图为最一简单链表的示意图: 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量.以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 n ...
- C语言 链表
原文:C语言 链表 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将要实现19个功能. ...
- C语言链表操作模板(添加,删除,遍历,排序)
C语言链表操作模板,摘自郝斌的C语言视频教程,简单的修改成了纯C格式.当年照着视频学习的时候记录下来的,在使用的时候直接拿来修改修改修改能节约不少时间的. /********************* ...
- Java链表基本操作和Java.util.ArrayList
Java链表基本操作和Java.util.ArrayList 今天做了一道<剑指offer>上的一道编程题“从尾到头打印链表”,具体要求如下:输入一个链表,按链表值从尾到头的顺序返回一个A ...
- C语言指针基本操作
C语言指针基本操作 指针 指针介绍 如果说C语言最有魅力的地方在哪,那么毋庸置疑,非指针莫属了. 众所周知,C语言中每个变量都有一个内存地址,可以通过&进行访问.指针是一个变量,它的值是一个 ...
- C语言链表结构体(学习笔记)
#include <stdio.h> #define LENTEST 100 // 采取逐步删除的方法求的素数 //先假设1-100都是素数,然后剔除2的倍数, //3的倍数,直到剔除所有 ...
随机推荐
- 利用meta标签将http请求换成https请求
最近网站升级为https之后,为了防止一些http文件没有修改而引起的问题,可以加一个meta标签: <meta http-equiv="Content-Security-Policy ...
- Hive集成HBase实践
#step1: create hive table 't_test' hive -e "create table test.t_user(id int,name string,age int ...
- C#语法之匿名函数和Lambda表达式
上一篇博客主要是对委托和事件做了一小结,这篇是在上一篇博客的基础上对匿名函数和Lambda表达式小结.还是接着上一篇说起,在上一篇中也说了委托是一种数据结构,主要是解决让函数作为参数的问题.在使用委托 ...
- Microsoft SQL SERVER 2008 R2 REPORT SERVICE 匿名登录
SQL SERVER 2008 R2 是微软目前最新的数据库版本,在之前的SQL SERVER 2005中,我们可以通过修改IIS对应的SSRS站点及SSRS的配置文件,将SSRS配置成匿名登录的方式 ...
- c#基础学习(0724)之可变参数、ref和out
params可变参数,无论有几个参数,必须出现在参数列表的最后,可以为可变参数直接传递一个对应类型的数组 #region 可变参数 //1.如果方法有多个参数,可变参数可以作为最后一个参数 //2.可 ...
- SQL Server数据类型转换方法
在SQL Server日常的函数.存储过程和SQL语句中,经常会用到不同数据类型的转换.在SQL Server有两种数据转换类型:一种是显性数据转换:另一种是隐性数据转换.下面分别对这两种数据类型转换 ...
- javascript中字符串常用操作总结
String对象属性 (1) length属性 length算是字符串中非常常用的一个属性了,它的功能是获取字符串的长度.当然需要注意的是js中的中文每个汉字也只代表一个字符,这里可能跟其他语言有些不 ...
- Myeclipse安装与破解
安装包+破解包 链接:https://pan.baidu.com/s/1G4mYsTOMDixyr2UmdqqY5A 提取码:a2n8 红色框框内的是安装包,蓝色框框内的是破解包 安装过程中比较简单, ...
- Docx4j将html转成word时,br标签为软回车的问题修改
docx4j版本:3.0.1 修改jar包:docx4j-ImportXHTML maven配置为: 具体代码位置:\org\docx4j\convert\in\xhtml\XHTMLImporter ...
- Python rest-framework 中类的继承关系(as_view)
一. 背景 最近几天一直在学习restful framework的源代码,用户请求的流程,在路由系统这块遇到一个疑问,关于类的继承关系,当请求进来到路由这块,执行as_view()方法的时候,为什么会 ...