#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

typedef struct Node {
    int data;
    struct Node * pNode
        } NODE,* PNODE;

PNODE create_list();
void show_list(PNODE);
int is_emp(PNODE);
int length_list(PNODE);
int insert_list(PNODE,int,int);
int delete_list(PNODE,int,int *);
void sort_list(PNODE);

int main(void) {

PNODE p = create_list();

sort_list(p);
    insert_list(p,3,99);
    show_list(p);
    int i;
    delete_list(p,3,&i);
     show_list(p);
      printf("\n");
     printf("%d",i);

return 0;

}

int delete_list(PNODE phead ,int pos,int * val){
     PNODE p = phead;
    int i =0;
    while(NULL!=p && i<pos-1) {
        p=p->pNode;
        i++;
    }
     if(i>pos-1|| NULL == p){
        return 0;
    }
    *val = p->pNode->data;

p->pNode=p->pNode->pNode;
    return 1;

}

int insert_list(PNODE phead,int pos,int val){
    PNODE p = phead;
    int i =0;
    while(NULL!=p && i<pos-1) {
        p=p->pNode;
        i++;
    }
    if(i>pos-1|| NULL == p){
        return 0;
    }
    PNODE pnew = (PNODE)malloc(sizeof(NODE));
    PNODE temp;

pnew ->data=val;

temp = p->pNode;
    p->pNode=pnew;
    pnew->pNode = temp;
    return 1;
}

void sort_list(PNODE phead) {
    int i,j,k;
    int len = length_list(phead);
    PNODE p,q;
    for(i=0,p=p->pNode;i<len-1;p=p->pNode,i++) {
        for(j=i+1,q=p->pNode;j<len;q=q->pNode,j++) {
            if(p->data > q->data) {
                k=q->data;
                q->data=p->data;
                p->data=k;
            }
        }
    }
    return;
}

int is_emp(PNODE phead) {
    if(phead -> pNode == NULL) {
        return 1;
    } else {
        return 0;

}

}

int length_list(PNODE phead) {
    int i =0;
    PNODE p = phead->pNode;
    while(NULL != p) {
        p=p->pNode;
        i++;
    }
    return i;
}

PNODE create_list() {
    int length = 0;
    int val=0;
    int i =0;
    printf("input the list len:  ");
    scanf("%d",&length);
    PNODE pHead = (PNODE)malloc(sizeof(NODE));
    PNODE tail=pHead;
    tail->data=0;
    tail->pNode = NULL;

if(NULL == pHead) {
        printf("t is error");
    }

for(i=0; i<length; ++i) {
        printf("the %d  node value:  ",i+1);
        scanf("%d",&val);
        PNODE pnew = (PNODE)malloc(sizeof(NODE));
        pnew ->data=val;
        tail->pNode=pnew;
        pnew->pNode=NULL;
        tail=pnew;

}
    return pHead;
}

void show_list(PNODE Plist) {
    PNODE next = Plist->pNode;
    while(NULL != next) {
        printf("%d  ",next->data);
        next = next->pNode;
    }
    printf("\n");

return;
}

C语言实现链表的更多相关文章

  1. C语言之链表

    这两天在复习C语言的知识,为了给下个阶段学习OC做准备,以下的代码的编译运行环境是Xcode5.0版本,写篇博文把昨天复习的C语言有关链表的知识给大家分享一下,以下是小菜自己总结的内容,代码也是按照自 ...

  2. C语言习题 链表建立,插入,删除,输出

    Problem B: C语言习题 链表建立,插入,删除,输出 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 222  Solved: 92 [Subm ...

  3. YTU 2430: C语言习题 链表建立,插入,删除,输出

    2430: C语言习题 链表建立,插入,删除,输出 时间限制: 1 Sec  内存限制: 128 MB 提交: 576  解决: 280 题目描述 编写一个函数creatlink,用来建立一个动态链表 ...

  4. 关于c语言单项链表尾添加

    犹豫了几天,看了很多大牛写的关于c语言链表,感触很多,终于下定决心,把自己对于链表的理解随之附上,可用与否,自行裁夺.由于作者水平有限也是第一次写,不足之处,竭诚希望得到各位大神的批评指正.制作不易, ...

  5. C语言之链表list

    #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h& ...

  6. C语言:链表实现的一个实例

    问题:写一个程序输入你一年看过的所有电影以及每部电影的各种信息(简化问题:每部电影只要求输入片名和评价) 链表实现: #include<stdio.h> #include<stdli ...

  7. C语言单链表实现19个功能完全详解

    谢谢Lee.Kevin分享了这篇文章 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将 ...

  8. (转)c语言_链表实例讲解(两个经典例子)

    建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. #include <stdio.h>#include <stdlib.h> struct grade {    ...

  9. Javascript模仿C语言的链表实现(增删改查),并且使用控制台输入输出

    Js新手最近在研究Js数据结构,刚好看到链表实现这一块儿,觉得有些资料和自己理解的有冲突,于是借着自己以前一点点C语言的基础,用Javascript模仿了C的链表实现,并且用了process.stdi ...

  10. c语言_链表实例讲解(两个经典例子)

    建立一个学生成绩的线性链表,对其实现插入,删除,输出,最后销毁. demo1 // lianbiao.cpp : Defines the entry point for the console app ...

随机推荐

  1. webstorm的debug模式

    F7 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内, 如果该方法体还有方法,则不会进入该内嵌的方法中 * F8 在 Debug 模式下,进入下一步,如果当前行断点是 ...

  2. Maven整理笔记の安装及配置

      第一部分:在Windows上安装Maven    检查JDK的安装 在安装Maven之前,首先确认你已经正确安装了JDK.Maven可以运行在JDK1.4及以上版本.先打开Windows命令,运行 ...

  3. [Windows] IIS7.5 部署ISAPI

    环境: OS:Windows Server 2008 R2 Enterprise sp1 64位 IIS:7.5 ISAPI: delphi xe 编译的webbroker isapi  dll  3 ...

  4. TSQL--游标Dem

    DECLARE @ID INT; ); ); DECLARE MyCursor CURSOR FOR ) ID,NAME1 FROM dbo.TB1 ORDER BY ID; OPEN MyCurso ...

  5. sql获取表的所有字段及属性

    select c.name as name,t.name as type ,convert(bit,c.IsNullable) as isNULL , from sysobjects where xt ...

  6. SQL命令行修改数据库

    增加列: alter table tableName add columnName varchar(30) 修改列类型:alter table tableName alter column colum ...

  7. 在.net Core中使用StackExchange.Redis 2.0

    StackExchange.Redis 2.0做了大量的改进包括使用了高性能的IO库System.IO.Pipelines来提升性能以及解决Timeouts问题, 但是在.net Core2.2之前为 ...

  8. ML.NET 0.9 版本发布---.net下的机器学习引擎

    欢迎来到 2019年!在过去的9个月里, 我们一直在为ML.NET添加新的特征和改进相关功能.在提交1.0版本之前,我们将专注于包的整体稳定性并对API进行不断优化, 扩大测试的覆盖面并对开发文档进行 ...

  9. WPF成长之路------视频

    今天偶然看到一篇博文,发现WPF原来还可以直接播放视频!于是在这里记录一下,以后方便使用: <MediaElement Source="C:\WINDOWS\system32\oobe ...

  10. 波利亚(Polya)罐子模型

    (波利亚(Polya)罐子模型)罐中有a个白球,b个黑球,每次从罐中随机抽取一球,观察其颜色后,连同附加的c个同色球   (波利亚(Polya)罐子模型)罐中有a个白球,b个黑球,每次从罐中随机抽取一 ...