#include<stdio.h>
#include<stdlib.h>
#define N sizeof(link)
typedef struct stu
{
struct stu *next;
int date;
}link;
void print(link*head)/*打印链表数据*/
{
link *p;
p=head->next;
if(p)
do
{
printf("%d\t",p->date);
p=p->next;
}while(p);
printf("\n");
}
link *creat(void)/*创建链表*/
{
link *head,*p,*s;
head=(link*)malloc(N);
head->next=p=(link*)malloc(N);
printf("请输入数据输入‘0’结束创建链表:\n");
scanf("%d",&p->date);
while(p->date)
{
p->next=(link*)malloc(N);
s=p;
p=p->next;
printf("请输入数据输入‘0’结束创建链表:\n");
scanf("%d",&p->date);
}
s->next=NULL;
return(head);
}
link *del(link *head,int m)/*删除指定数据节点*/
{
link *p,*last,*s;
last=head;
p=head->next;
while(p)
{
if(p->date==m)
{
last->next=p->next;
s=p;
p=p->next;
free(s);
}
else {
last=last->next;
p=p->next;
}
}
return head;
}
link *insert(link *head,int m)/*在m数据结点后插入结点并输入数据*/
{
link *p,*pnew;
for(p=head->next;p;p=p->next)
if(p->date==m)
{
pnew=(link*)malloc(N);
printf("请输入插入的数据:\n");
scanf("%d",&pnew->date);
pnew->next=p->next;
p->next=pnew;
}
printf("成功插入结点数据!\n");
return(head);
}
int main()
{
link*head;
int n;
head=creat();
printf("打印未处理的数据:\n");
print(head);
printf("\n输入要删除的数据结点:\n");
scanf("%d",&n);
printf("打印删除后的链表数据:\n");
print(del(head,n));
printf("\n输入在哪个链表数据后插入结点:\n");
scanf("%d",&n);
printf("打印插入后的链表数据:\n");
print(insert(head,n));
return ;
}

测试数据:

请输入数据输入‘0’结束创建链表:
1
请输入数据输入‘0’结束创建链表:
2
请输入数据输入‘0’结束创建链表:
3
请输入数据输入‘0’结束创建链表:
4
请输入数据输入‘0’结束创建链表:
5
请输入数据输入‘0’结束创建链表:
6
请输入数据输入‘0’结束创建链表:
7
请输入数据输入‘0’结束创建链表:
8
请输入数据输入‘0’结束创建链表:
9
请输入数据输入‘0’结束创建链表:
10
请输入数据输入‘0’结束创建链表:
0
打印未处理的数据:
1 2 3 4 5 6 7 8 9 10 输入要删除的数据结点:
7
打印删除后的链表数据:
1 2 3 4 5 6 8 9 10 输入在哪个链表数据后插入结点:
6
打印插入后的链表数据:
请输入插入的数据:
666666
成功插入结点数据!
1 2 3 4 5 6 666666 8 9 10
Press any key to continue

  

谭浩强C语言第四版第九章课后习题7--9题(建立,输出,删除,插入链表处理)的更多相关文章

  1. 谭浩强第四版第九章课后习题12>>>建立一个链表,每个节点包括:学号、姓名、性别、年龄。输入一个年龄,若链表 中的结点所包含的年龄等于此年龄,则删除此结点。

    #include<stdio.h> #include<stdlib.h> #define N sizeof(link) typedef struct lin { struct ...

  2. NEUQ1051: 谭浩强C语言(第三版)习题6.7

    //C代码简直难看到家,求大神知道如何写出复用性好的,维护性强的代码... //格式错误了好几次,最后发现是are和数字之间多了个空格......本来一直以为是最后的换行多了,费劲搞掉了. #incl ...

  3. NEUQ1055谭浩强C语言(第三版)习题6.11

    //迭代公式不是很理解,写出来算了.. #include <stdio.h> #include <math.h> int main() { double x0,x1; int ...

  4. NEUQ1038: 谭浩强C语言(第三版)习题4.8

    之前没做对的一道题,今天集中清理一下. //------------------- 很水的题,主要是 %.2lf 不能四舍五入,需要仅保留两位小数,用了丑陋的强制类型转换... //--------- ...

  5. 读谭浩强C语言数据结构有感(1)

    1.什么是数据结构? 数据结构,就是我们计算机内部的运算,编程语言的基础工作模式吧,个人总结的 = = !! 数据:说简单一点,就是计算机二进制机器码,然后通过一些复杂的操作,变为复杂的语言. 数据元 ...

  6. 谭浩强 c++程序设计第一章课后习题 第10题

    #include <iostream> using namespace std; int main() { int a,b,c; cout<<"请输入三个整数类型的数 ...

  7. 谭浩强 c++程序设计第一章课后习题 第7题

    #include <iostream> using namespace std; int main() { int a,b,c; int f(int x,int y,int z);//这是 ...

  8. java编程思想第四版第九章总结

    1. 策略设计模式 参考这篇文章:http://blog.csdn.net/chenjie19891104/article/details/6396458 讲的很清楚,策略设计模式.并且举了一个例子, ...

  9. java编程思想第四版第九章习题

    第三题 package net.mindview.interfaces; abstract class Base{ public Base(){ print(); } abstract void pr ...

随机推荐

  1. day013-流

    1. 常用函数式接口 1.1 Predicate接口 有时候我们需要对某种的数据进行判断,从而得到一个boolean值结果.这时可以使用java.util.function.Predicate< ...

  2. 西门子 1500 1200 PLC,位访问, 字节访问

    访问byte,word中的位 mybyte.%X1 myword.%X1 访问word/dword中的byte myword.%B0 myword.%B1 myDword.%B0 文中mybyte, ...

  3. May 16th 2017 Week 20th Tuesday

    The most fearful enemy is not having a firm conviction. 最可怕的敌人,就是没有坚强的信念. A firm conviction or belie ...

  4. 利用raphael画图

    raphael是一个js的矢量库,可以js操作DOM可以实现柱形图.走势图等一些基本的图形: 一.使用: 在html中设置<div class="my"></di ...

  5. Android开发经验01:31个Android开发实战经验

    1. 在Android library中不能使用switch-case语句访问资源ID:在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案 2. 不能 ...

  6. MySQL:数据库入门篇5

    1.存储引擎 innodb与MyIASM存储引擎的区别: 1.innodb 是mysql5.5版本以后的默认存储引擎, 而MyISAM是5.5版本以前的默认存储引擎. 2.innodb 支持事物,而M ...

  7. 用c#语言编写水仙花数

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  8. ECMAScript6

    ECMAScript6介绍 # ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现 # 有利于保证这门语言的开放性和中立性. # 标准在每年的 6 月份正 ...

  9. 并发编程之多线程基础-join方法及优先级(五)

    join()方法作用 当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1 优先级 现代操作系统基本采用时分的形式调度运行的线程,线程分配得到的时间片的多少决定了线程使用处理 ...

  10. ios应用数据存储方式(偏好设置)-转

    一.简单介绍 1.很多ios应用都支持偏好设置,比如保存用户名,密码,字体大小等设置,ios提供了一套标准的解决方案来为应用加入偏好设置功能. 2.每个应用都有个NSUserDefaults实例,通过 ...