1.写一个最基本的链表

#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
struct Node{
    Node *next;
    ElemType data;
};
void CreateList(Node*&L)
{
    L = (Node*)malloc(sizeof(Node));
    if(!L) exit(-2);
    L->next = NULL;
    L->data = 0;
}
void InsertList(Node*&L,ElemType e)
{
    Node *p = L;
    for(int i=0;i<L->data;++i)
    {
        p=p->next;
    }
    Node *s = NULL;
    s=(Node*)malloc(sizeof(Node));
    s->data = e;
    s->next = p->next;
    p->next = s;
    ++(L->data);
}
void DeleteList(Node*&L,int n)
{
    Node*p = L;
    if(n<1||n>L->data) exit(-2);
    for(int i = 0;i<n-1;i++)
    {
        p=p->next;
    }
    Node*temp = p->next;
    p->next = p->next->next;
    free(temp);
}
void ShowList(Node*&L)
{
    Node *p = L;
    while(p){
        printf(">%d\t",(p)->data);
        p=p->next;
    }

    printf("\n");
}
int main()
{
    Node *N1;
    CreateList(N1);
    InsertList(N1,1);
    ShowList(N1);
    InsertList(N1,2);
    ShowList(N1);
    InsertList(N1,3);
    ShowList(N1);
    InsertList(N1,4);
    ShowList(N1);
    InsertList(N1,5);
    ShowList(N1);
    DeleteList(N1,4);
    ShowList(N1);
    DeleteList(N1,2);
    ShowList(N1);
}
    
时间: 2024-10-13 07:38:40

1.写一个最基本的链表的相关文章

c语言:写一个函数建立一个有3名学生数据的单向动态链表

写一个函数建立一个有3名学生数据的单向动态链表. 解:程序: #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { long num; float score; struct Student *next; }; int n; struct Student *creat(void)//定义函数返回一个指向链表头的指针 { struct Student *head

【原创】只学到二维数组和结构体,不用链表也能写一个C贪食蛇?(一)

先扯几句闲话 往往非科班出身的编程爱好者,以C作为入门语言时,往往会问:“我学了这个XX,能做些什么?” 其实,配合Google,基本上啥都能做了. 你甚至连链表都不需要,就可以写一个贪食蛇小游戏 :) 本系列将分4个部分,让任何一个仅仅会二维数组合结构体的初学者写出自己的贪食蛇 进入正题.我们先分析一下问题,确定下四个部分. 0.分析游戏的本质以及在控制台中的表现形式 1.分析贪食蛇游戏的基本结构 2.确定实现方案 3.全部源代码 一.游戏,或者视频游戏的本质是什么? 0.游戏的本质是程序 对

java单链表的实现自己动手写一个单链表

单链表:单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据.自己手动写一个单链表:首先,定义一个节点类: package com.wei; public class Link { public int data;// 存放数据 public Link next;// 存放下一个节点 public Link(

js写一个通讯录

模拟通讯录列表功能 我们手机上面的通讯录列表里面都有根据右侧的字母跳滚动到该字母的第一个名单地方. 于是我把这个功能拆分成两个功能区思考: 第一个是如何把这些名字的的汉字首字母提取出来,并且把相同字母的汉字归类,最后显示成列表. 第二是右侧字母导航,它需要一直固定在右侧,并且我按一个字母,屏幕最中间会弹出一个字母方框,代表我选中了这个字母. 我首先去实现第一个问题,如何提取名字中第一个汉字的首字母? 我去尝试过许多种方法,其中尝试过使用localeCompare(),我也成功的排序了,但是我发现

用C写一个web服务器(二) I/O多路复用之epoll

.container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px } .container::before,.container::after { content: " "; display: table } .container::after { clear: both } .container::before,.container::after { content:

如何写一个Web服务器

最近两个月的业余时间在写一个私人项目,目的是在Linux下写一个高性能Web服务器,名字叫Zaver.主体框架和基本功能已完成,还有一些高级功能日后会逐渐增加,代码放在了github.Zaver的框架会在代码量尽量少的情况下接近工业水平,而不像一些教科书上的toy server为了教原理而舍弃了很多原本server应该有的东西.在本篇文章中,我将一步步地阐明Zaver的设计方案和开发过程中遇到的困难以及相应的解决方法. 为什么要重复造轮子 几乎每个人每天都要或多或少和Web服务器打交道,比较著名

一步一步写算法(之单向链表)

原文:一步一步写算法(之单向链表) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 有的时候,处于内存中的数据并不是连续的.那么这时候,我们就需要在数据结构中添加一个属性,这个属性会记录下面一个数据的地址.有了这个地址之后,所有的数据就像一条链子一样串起来了,那么这个地址属性就起到了穿线连结的作用. 相比较普通的线性结构,链表结构的优势是什么呢?我们可以总结一下: (1)单个节点创建非常方便,普通的线性内存通常在创建的时候就需要设定数据的

假期跟我一起写一个点对点VPN-SimpleVPN详解

自从上周写了几篇关于BadVPN的文章后,收到很多的邮件前来询问细节.其中最多的不外乎两类,一类是询问怎么使用的,另一类则是要求我写几篇源码分析.先来一个一个说. 1.关于BadVPN的使用问题 和OpenVPN相反,BadVPN几乎没有除了配置隧道之外的任何东西,这些被排除了内容中最重要的应该就是路由了.OpenVPN中就有关于路由的很多配置,还可以从服务端往客户端推送路由,这简直太方便了,但同时也增加了配置的复杂性.BadVPN我认为是比较好的方式,它本身没有关于路由的任何配置,只要你把隧道

如何写一个处理多媒体的中间库

这里实现一个简单的多媒体数据流的处理库,它是以Filter的思想来实现的,通过Filter可以实现多路数据采集,处理和输出; 一. 如何实现一个filter 1.定义一个Filter descripter 结构,它包含了Filter的主要属性和行为: typedef struct McFilterDesc{ McFilterId id; const char* name; const char* text; McFilterCategory category; const char* encFo