some code of c
//
// main.c
// LineList
//
// Created by Rubert on 16/9/11.
// Copyright © 2016年 Study. All rights reserved.
// #include <stdio.h>
//定义链表数据结构
struct node
{
int num;
struct node *next;
struct node *prior; };
//函数声明
struct node *create();
void print();
void linkedList();
void headInsertLinkedList();
void tailInsertLinkedList();
void findLinkedList();
void insertLinkedList();
void deleteLinkedList();
void circleInsertLinkedList();
void doubleInsertLinkedList();
int main(int argc, const char * argv[]) {
// insert code here...
//headInsertLinkedList();
//tailInsertLinkedList();
//findLinkedList();
//insertLinkedList();
//deleteLinkedList();
//circleInsertLinkedList();
doubleInsertLinkedList();
return ;
} /*
* 头插入法创建链表
*/
void headInsertLinkedList() {
struct node *head = NULL;
struct node *p1;
for(int i = ; i < ; i ++) {
p1 = (struct node*)malloc(sizeof(struct node));
p1 -> num = i;
p1 -> next = head;
head = p1;
}
print(head);
} /*
* 尾插入法创建链表
*/
void tailInsertLinkedList() {
struct node *head = NULL;
struct node *p1,*p2;
p1 = p2 = (struct node*)malloc(sizeof(struct node));
for(int i = ; i < ; i ++) {
if(head == NULL) {
head = p1;
} else {
p2 -> next = p1;
}
p2 = p1;
p1 = (struct node*)malloc(sizeof(struct node));
p1->num = i;
}
print(head);
} /**
* 创建循环链表
*/
void circleInsertLinkedList() {
struct node *head = NULL;
struct node *p1,*p2;
p1 = p2 = (struct node*)malloc(sizeof(struct node));
for(int i = ; i < ; i ++) {
if(head == NULL) {
head = p1;
} else { if(i == ) {
p1->next = head;
}
p2 -> next = p1;
}
p2 = p1;
p1 = (struct node*)malloc(sizeof(struct node));
p1->num = i; }
print(head);
} /**
* 创建双向链表
*/
void doubleInsertLinkedList() {
struct node *head = NULL;
struct node *p1,*p2;
p1 = p2 = (struct node*)malloc(sizeof(struct node));
for(int i = ; i < ; i ++) {
if(head == NULL) {
head = p1;
} else {
/*if(i == 9) {
p1->next = head;
}*/
p2 -> next = p1;
p1 -> prior = p2;
}
p2 = p1;
p1 = (struct node*)malloc(sizeof(struct node));
p1->num = i; }
print(head);
} /*
* 链表查找
*/
void findLinkedList() { struct node *head = NULL;
struct node *p1;
for(int i = ; i < ; i ++) {
p1 = (struct node*)malloc(sizeof(struct node));
p1 -> num = i;
p1 -> next = head;
head = p1;
} struct node *p;
p = head -> next;
int j = ;
int i = ;
while(p !=NULL && j < i)
{
p = p->next;
++j;
}
printf("%6d %d %d\n",p->num, p, p->next);/*输出链表节点的值*/
} /*
* 链表中插入
*/ void insertLinkedList() { struct node *head = NULL;
struct node *p1;
for(int i = ; i < ; i ++) {
p1 = (struct node*)malloc(sizeof(struct node));
p1 -> num = i;
p1 -> next = head;
head = p1;
} struct node *p,*m;
p = head;
int j = ;
int i = ;
while(p !=NULL && j < i-)
{
p = p->next;
++j;
} if(p == NULL) {
printf("error");
} else {
m = (struct node*)malloc(sizeof(struct node));
m->num = j;
m->next = p -> next;
p->next = m;
} print(head); } /*
* 链表中删除
*/ void deleteLinkedList() { struct node *head = NULL;
struct node *p1;
for(int i = ; i < ; i ++) {
p1 = (struct node*)malloc(sizeof(struct node));
p1 -> num = i;
p1 -> next = head;
head = p1;
} struct node *p,*m;
p = head;
int j = ;
int i = ;
while(p !=NULL && j < i-)
{
p = p->next;
++j;
} if(p == NULL) {
printf("error");
} else {
//m = (struct node*)malloc(sizeof(struct node));
//m->num = j;
//m->next = p -> next;
p->next = p->next->next; } print(head); } /*
* sample 1
*/
void linkedList()
{
struct node *head;
head = NULL;//创建一个空表
head = create(head); /* 创建单链表 */
print(head);/* 打印单链表 */ } struct node *create(struct node *head) //返回的是与节点相同类型的指针
{
struct node *p1,*p2;
int i = ;
//利用malloc() 函数向系统申请分配一个节点
p1 = p2 = (struct node*)malloc(sizeof(struct node));//新节点
printf("请输入值,值小于等于0结束,值存放地址为:p1_ADDR= %d\n",p1);
scanf("%d",&p1->num);/*输入节点的值*/
p1->next=NULL;/*将新节点的指针置为空*/
while(p1->num > )/*输入节点的数值大于0*/
{
//④将新节点的指针成员赋值为空。若是空表,将新节点连接到表头;若是非空表,将新节点接到表尾;
if(head == NULL)
head = p1;/*空表,接入表头*/
else
p2->next = p1;/*非空表,接到表尾*/
p2 = p1; p1 = (struct node*)malloc(sizeof(struct node));/*下一个新节点*/
i = i+;
printf("请输入值,值小于等于0结束,值存放地址为:p%d_ADDR= %d\n",i,p2);
scanf("%d",&p1->num);/*输入节点的值*/
//⑤判断一下是否有后续节点要接入链表,若有转到3 ),否则结束;
}
//==============原来程序更正部分:(多谢@daling_datou提醒)================================
//free(p1); //申请到的没录入,所以释放掉
p1 = NULL; //使指向空
p2->next = NULL; //到表尾了,指向空
printf("链表输入结束(END)\n");
//==============================================
return head;
} void print(struct node *head)/*出以head为头的链表各节点的值*/
{
struct node *temp;
temp = head;/*取得链表的头指针*/ printf("\n\n\n链表存入的值为:\n");
while(temp != NULL)/*只要是非空表*/
{
printf("%6d %d %d %d\n",temp->num, temp, temp->next, temp->prior);/*输出链表节点的值*/
temp = temp->next;/*跟踪链表增长*/
}
printf("链表打印结束!!");
}
some code of c的更多相关文章
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- http status code
属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...
- Visual Studio Code——Angular2 Hello World 之 2.0
最近看到一篇用Visual Studio Code开发Angular2的文章,也是一篇入门教程,地址为:使用Visual Studio Code開發Angular 2專案.这里按部就班的做了一遍,感觉 ...
- WebStorm 2016 最新版激活(activation code方式)
WebStorm 2016 最新版激活(activation code方式) WebStorm activation code WebStorm 最新版本激活方式: 今天下载最新版本的WebStorm ...
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
.net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对岸的苹果园越来越茂盛,实在不想再去做一只宅猿了.于是,.net猿决定搭上小鲸鱼的渡轮到苹果园去看 ...
随机推荐
- CentOS 安装 Wine
1. 下载安装包 Wine的中文官网可以下载到最新稳定和开发版本的Wine安装包,根据不同需求可以自行下载 2. 解压安装包,编译前检查 根据不同的平台选择不同的编译选项: For 32-Bit Sy ...
- Rethink your own
0 声明 文中显式或隐式指出是摘抄的部分,仅代表原作者的观点. 该随笔的动机源自胡适先生的一句话的前半部分: 1 知识以及建立知识的过程有强弱.高大上土肥圆之分吗? 文章摘自传说中的1024:[真人轉 ...
- KANO模型
一.满意度的定义 消费者的满意度是取决于他们对企业所提供的产品和服务的事前期待,与实际(感知)效果之间的比较后,用户形成的开心或失望的感觉.就是说,如果购后在实际消费中的实际效果与事前期待相符合,则感 ...
- Egit Patch
Git为我们提供了Patch功能,Patch中包含了源码更改的描述,能够应用于其他Eclipse工作空间或者Git仓库.也就是说,可以将当前提交导出至其他分支或者项目中. 举个例子,项目A.B中使 ...
- sql server 表中的编号自增
http://jingyan.baidu.com/article/fec4bce244f902f2608d8b7a.html
- springmvc 自定义注解 以及自定义注解的解析
1,自定义注解名字 @Target({ElementType.TYPE, ElementType.METHOD}) //类名或方法上@Retention(RetentionPolicy.RUNTI ...
- 从小工到专家 ——读《Java程序员职场全攻略》有感
从小工到专家 ——读<Java程序员职场全攻略>有感 <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...
- 对C语言的知识与能力予以自评
看到一个问卷不错,拟作为第三次作业的部分内容. 你对自己的未来有什么规划?做了哪些准备?我准备在将来成为一名合格的软件工作人员,我已经在平时有空的时间里着手代码的练习. 你认为什么是学习?学习有什么用 ...
- 初学JAVA的 感想 尹鑫磊
开始学习任何一门课(包括java),兴趣最重要.一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并 ...
- codeforces 733D
明白了自己这么菜的原因多半是赛后不肯去补那些需要多花点时间思考的题目以及效率不高,但愿现在还不算晚... #include<bits/stdc++.h> #include<iostr ...