C语言链表的简单实用

//

//  ViewController.m

//  链表

//

//  Created by 张凯泽 on 16/1/26.

//  Copyright © 2016年 rytong_zkz. All rights reserved.

//

#import "ViewController.h"

/*

static 关键字的作用:

(1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次,

因此其值在下次调用时仍维持上次的值;

(2)在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

(3)在模块内的 static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明

它的模块内;

(4)在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;

(5)在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的static 成员变量。

*/

typedef struct list{

int num;

struct list * next;

}List;

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//    int a =[self lianbiao];

//    printf(@"______________%d",a);

}

-(void)stransition:(int**)p

{

printf("p = %p\n",p);

}

-(int)lianbiao

{

List * head = NULL;

//int i = 0;

head = initList();

printf("head = %p",head);

if (head == NULL) {

return -1;

}

insertList(&head ,2);

insertList(&head ,4);

insertList(&head ,6);

insertList(&head ,3);

insertList(&head ,1);

priList(head);

deleteList(&head ,1);

priList(head);

deleteList(&head ,2);

priList(head);

deleteList(&head ,3);

priList(head);

freeList(&head);

return 0;

}

//初始化链表

static List * initList()

{

List * list = NULL;

list = (List*)malloc(sizeof(List));

if (list == NULL) {

return NULL;

}

list ->next = NULL;

return list;

}

//打印链表信息

static void priList(List* list)

{

if (list == NULL) {

return;

printf("------------\n");

}

while (list ->next) {

printf("%d\n",list -> next ->num);

list = list -> next;

}

printf("-----------\n");

return;

}

//根据num大小插入链表节点

static int insertList(List** list , int num)

{

List * now = NULL;

List * head = *list;//这里*list的地址就是 刚开始初始化获得地址head的地址

now = initList();

if (now == NULL) {

return -1;

}

now -> num = num;

while (head ->next && num >= head -> next -> num) {

head = head ->next;

}

if (head -> next == NULL) {

head -> next = now;

}else{

now -> next = head -> next;

head -> next = now;

}

return 0;

}

//计算链表的长度

static int numList (List * head)

{

int len = 0;

while (head && head -> next) {

len ++ ;

head = head -> next;

}

return len;

}

//调用free 逐个释放链表的节点

static void freeList(List** list)

{

List* head = *list;

List* p = NULL;

while (head) {

p = head;

head = head ->next;

free(p);

}

printf("free List ok \n");

return;

}

//删除对应位置的节点

static int deleteList(List** list , int location)

{

List * head = *list;

List* p = NULL;

int i = 1;

if (location <= 0 || location > numList(head)) {

return -1;

}

while (i++ <location && head -> next) {

head = head -> next;

}

p = head -> next;

head -> next = p -> next;

if (p) {

free(p);

p = NULL;

}

return 0;

}

@end

时间: 2024-12-21 19:07:43

C语言链表的简单实用的相关文章

C语言----------链表的简单操作

#include <stdio.h> #include <malloc.h> typedef struct node{ //定义节点类型 char data; //数据域 struct node *next; //指针域 }linklist; linklist* Create(){ //创建链表 char key; linklist *phead; //头指针 linklist *pnew; //新节点 linklist *pend; //尾指针 phead = (linklist

R语言:用简单的文本处理方法优化我们的读书体验

前言 延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做一些简单的文本处理.分词的事情.其实就是继续讲一下用R语言读书的事情啦,讲讲怎么用它里面简单的文本处理方法,来优化我们的读书体验,如果读邮件和读代码也算阅读的话..用的代码超级简单,不涉及其他包 这里讲两个示例,结尾再来吐槽和总结. 1)R-Blogger订阅邮件拆分 2) R代码库快速阅读方法 不在博客园上阅读时才会看到的,这篇博文归 http://www.cnblogs.com/weibaar所有 仅保证在博客园博客上的排版干净利索

简单实用的CSS网页布局中文排版技巧

由于汉字的特殊性,在css网页布局中,中文排版有别于英文排版.排版是一个麻烦的问题,小编认为,作为一个优秀的网页设计师和网页制作人员,掌握一些简单的中文排版技巧是不可或缺的,所以今天特意总结了几个简单实用的技巧,希望对大家有所帮助. 一.如何设定文字字体.颜色.大小等 font-style设定斜体,比如font-style:italic font-weight设定文字粗细,比如font-weight:bold font-size设定文字大小,比如font-size:12px line-heigh

用GO语言实现一个简单的搜索引擎

用GO语言实现一个简单的搜索引擎 项目地址是:https://github.com/wyh267/FalconEngine 对搜索引擎感兴趣的可以去看看这本书,比较浅并且也比较完整的介绍了一个搜索引擎的全部机能. 我的这个搜索引擎原始数据是MySql数据库的,大家可以根据需要进行二次开发,用来支持其他数据库或者本地文件,Detail文件是存储在Redis数据库中,同样这部分也可以根据自己的需要二次开发,使用本地文件或者其他数据库,倒排索引和正排索引本地存储的时候使用的json格式,比较耗磁盘,第

R语言学习-对象处理实用函数

R语言的对象处理实用函数可视为一个分析变量(或对象)的工具集,类似于Java中的反射功能,但使用起来更简单. 处理数据对象的实用函数见下表: 函数 用途 length(object) 显示对象中元素/成分的数量 dim(object) 显示某个对象的维度 str(object) 显示某个对象的结构 class(object) 显示某个对象的类或类型 mode(object) 显示某个对象的模式 names(object) 显示某对象中各成分的名称 c(object, object,-) 将对象合

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

下图为最一简单链表的示意图: 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量.以下的每个结点都分为两个域,一个是数据域,存放各种实际的数据,如学号 num,姓名 name,性别 sex 和成绩 score 等.另一个域为指针域,存放下一结点的首地址.链表中的每一个结点都是同一种结构类型. 指针域: 即在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常把它称为指针域. 在第一个结点的指针域内存入第二个结点的首地址,在第二个结点的指针域

简单实用的PHP防注入类实例

这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注入类.分享给大家供大家参考.具体如下: PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全. PHP防注入类代码如下: 复制代码 代码如下: <?php /**  * 参数处理类  *

数据结构概述&lt;3&gt;链表的简单应用

今天介绍两个链表的简单应用. 1.约瑟夫问题 假设有N个人决定选出一个领导人,方法如下:所有人排成一个圆圈,按顺序数数,每次数到第M个人出局,此时,他两边的人靠拢重新形成圆圈.问题是找出哪一个人将会是最后剩下的那个人.下列程序依次读入N和M,并给出最终结果. #include <stdlib.h> #include <stdio.h> typedef struct node* link; struct node { int item; link next; }; int main(

微信公众平台之超简单实用的天气预报后台实现

微信公众平台之超简单实用的天气预报后台实现 概述,前段时间我在开发一个自己的微信公众平台,需要实现天气预报功能,在网上度娘了下,实现天气预报的接口API还蛮多的,有:中国气象局.雅虎和新浪等,中国天气预报接口需要全国的编码,雅虎的有时候访问不了,研究了下还是新浪提供的接口比较简单实用.新浪天气预报API的URL是http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0.其