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语言链表基本操作的更多相关文章

  1. ZT C语言链表操作(新增单向链表的逆序建立)

    这个不好懂,不如看 转贴:C语言链表基本操作http://www.cnblogs.com/jeanschen/p/3542668.html ZT 链表逆序http://www.cnblogs.com/ ...

  2. c++学习笔记—单链表基本操作的实现

    用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表).结点的查找.删除.排序.打印输出.逆置.链表销毁等基本操作. IDE:vs2013 具体实现代码如下: #include  ...

  3. C语言SQLite3基本操作Demo

    /************************************************************************** * C语言SQLite3基本操作Demo * 声 ...

  4. C语言链表实例--玩转链表

    下图为最一简单链表的示意图: 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量.以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 n ...

  5. C语言 链表

    原文:C语言 链表 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将要实现19个功能. ...

  6. C语言链表操作模板(添加,删除,遍历,排序)

    C语言链表操作模板,摘自郝斌的C语言视频教程,简单的修改成了纯C格式.当年照着视频学习的时候记录下来的,在使用的时候直接拿来修改修改修改能节约不少时间的. /********************* ...

  7. Java链表基本操作和Java.util.ArrayList

    Java链表基本操作和Java.util.ArrayList 今天做了一道<剑指offer>上的一道编程题“从尾到头打印链表”,具体要求如下:输入一个链表,按链表值从尾到头的顺序返回一个A ...

  8. C语言指针基本操作

    C语言指针基本操作 指针  指针介绍 如果说C语言最有魅力的地方在哪,那么毋庸置疑,非指针莫属了. 众所周知,C语言中每个变量都有一个内存地址,可以通过&进行访问.指针是一个变量,它的值是一个 ...

  9. C语言链表结构体(学习笔记)

    #include <stdio.h> #define LENTEST 100 // 采取逐步删除的方法求的素数 //先假设1-100都是素数,然后剔除2的倍数, //3的倍数,直到剔除所有 ...

随机推荐

  1. CentOS探索之路3---安装python3

    安装Python3 总述 ​ 一般来说Linux类型的操作系统都会自带安装python,但是系统默认安装的python都是2.x的版本.而现在一般使用的是python3.x版本,相比于python2. ...

  2. awk 统计文件中按照某列统计某列的和(sum)

    把第一列相同的名称的第二列加起来: [root@localhost cc]# cat 1.txtaaa 10 bbb 20aaa 30ccc 40ccc 20ccc 40 [root@localhos ...

  3. Start transaction not working with Revit 2014

    You're right, it's not being used correctly. The Transaction needs to take place inside the Idling e ...

  4. 图片切换(手动切换,imagelist的单独使用)

    //当前图片的索引 private int currIndex = 0; //判断上一个按钮和下一个按钮是否可用 private void SetEabled() { //如果当前显示的是第一张图片, ...

  5. spring jpa和mybatis整合

    spring jpa和mybatis整合 前一阵子接手了一个使用SpringBoot 和spring-data-jpa开发的项目 后期新加入一个小伙伴,表示jpa相比mybatis太难用,多表联合的查 ...

  6. hdu 3085

    Nightmare Ⅱ Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  7. java的文件操作(1)

    package com.test.file; import java.io.*; import java.util.ArrayList; import java.util.Date; import j ...

  8. 关于nginx下drupal7无法$_GET获取参数的问题

    参考:nginx 官方drupal 配置 - Drupal | NGINX 之前配置好了LNMP下的drupal7(7.59版本),简洁路径也配好了.但是在使用过程出现问题. 配置的nginx.con ...

  9. 规划行业GIS云平台“城智图”上线运行

    首先祝各位朋友中秋节快乐! 城智图(www.imapcity.com)是远景GIS云平台的首个应用项目,它以全新的方式为规划部门提供地理信息服务,改变了以前规划部门只有CAD成果数据,难以查阅.深入挖 ...

  10. JSP用户登录页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...