c语言,链表

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

struct Node{
    struct Node* next;
    int data;
};
typedef struct Node  NODE;
typedef struct Node  LIST;

LIST *creat_link_list(LIST *L, int n)
{
    int i;
    NODE *p = 0;
    L = (NODE*) malloc(sizeof(NODE)); L->next =0;
    for(i = 0; i < n; i++)
    {
        p = (NODE*) malloc(sizeof(NODE));
        printf("input a data to be inserted:");
        scanf("%d", &p->data);

        p->next = L->next;
        L->next = p;
    }
    return L;
}

int delete_node(NODE* p)
{
//     static int s_i =1;
//     printf("delete %d\n", s_i++);
    p->next = 0;
    free(p);
    p = 0;  

    return 0;
}

int delete_link_list(LIST *L)
{
    NODE* pd = L->next;

    while(L->next != 0){
        pd = L->next;
        L->next = L->next->next;
        delete_node(pd);
    }
    delete_node(L);

    return 0;
}

int show_link_list(LIST *L)
{
    NODE* ps = L->next;
    int i = 0;

    while(ps != 0){
        printf("node%d: %d,", ++i , ps->data);
        ps = ps->next;
    };

//     do{    //错误
//         printf("node%d: %d,", ++i , ps->data);
//         ps = ps->next;
//     }while(ps->next != 0);

    return 0;
}
int t2()
{
    NODE *L = 0;
    int n = 3;

    L = creat_link_list( L, n);
    printf("\ncreat_link_list over\n");

    show_link_list(L);
    printf("\nshow_link_list over\n");

    delete_link_list(L);
    printf("\ndelete_link_list over\n");

    return 0;
}
/*
input a data to be inserted:1
input a data to be inserted:2
input a data to be inserted:3

creat_link_list over
node1: 3,node2: 2,node3: 1,
show_link_list over

delete_link_list over
请按任意键继续. . .
*/
时间: 2024-11-05 11:51:16

c语言,链表的相关文章

C语言-链表

单向链表:结构体非常适合链表结构,链表的组成:head指针.数据块节点指针p->nest.结束指针NULL. 链表操作:需要首先找到表头head指针.链表的操作包括动态链表的创建.顺序输出.删除节点.插入节点的操作. 动态存储操作函数:(ANSI规则返回的指针类型为void*,早期的为字符型指针) 分配一个块:void *malloc(unsigned int size)  //分配成功则返回指向起始地址的指针void * 分配多个块:void *calloc(unsigned n,unsign

关于c语言链表的操作

这几天又讲到链表了,但是又忘记了,所以重新把关于链表的建链表,对链表进行排序,然后是删除,插入,以及遍历等功能..但是最近要考试了,所以没有写成菜单的形式..等考试完了,在进行补充吧.. 代码如下... #include<stdio.h> #include<stdlib.h> #include<string.h> struct node { int data; struct node *next; }; int main() { /*建立链表操作*/ int n,x,p

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

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

c语言链表和指针的运用

在学习指针之前,首先要认识指针.指针是一个存储计算机内存地址的变量.从指针指向的内存读取数据称作指针的取值.指针可以指向某些具体类型的变量地址,例如int.long和double.指针也可以是void类型.NULL指针和未初始化指针. 根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值.当用在声明一个变量时,*表示这里声明了一个指针.其它情况用到*表示指针的取值.&是地址操作符,用来引用一个内存地址.通过在变量名字前使用&操作符,我们可以得到该变量的内存地址.

C语言链表的来源分析

C语言中的链表是重点,也是难点,而且意义非凡.对链表的的抽象和恐惧是源于对它的来龙去脉的不明白.所以很有必要对它的发展渊源做透彻分析. 链表的单位是节点,而节点源于复合数据类型:结构体: 节点和结构体的区别就是看是否有指针域,目的就是想找到下一个节点: 结构体形如: struct Ghost { char name[30]; int age; int height; char addr[30]; }; 节点形如: struct Ghost { char name[30]; int age; in

注释最全的C语言链表的增删改查

1 //这是C语言的写法,但会报错,原因是len(当前的节点长度) 2 //无法在insert(插入)和deleted(删除)之后改变 3 //不能使用delete是因为delete是C++中的一个运算符 4 //最终我把改程序用C++写了一遍,运用引用将len的真实值改变了 5 #include <stdio.h> 6 #include <stdlib.h> 7 typedef int ElementType; 8 typedef struct node { 9 ElementT

C语言链表

#define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" typedef struct _Teacher { int age; struct _Teacher *next; }Teacher; Teacher* create_teacher(); int print_teacher(Teacher * pHeader); int add_teacher(Teacher * pHead

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

C语言链表的简单实用

// //  ViewController.m //  链表 // //  Created by 张凯泽 on 16/1/26. //  Copyright © 2016年 rytong_zkz. All rights reserved. // #import "ViewController.h" /* static 关键字的作用: (1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次, 因此其值在下次调用时仍维持上次的值: (2)在

C语言 链表排序

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 5 typedef struct node{ 6 int data; // 存放数据 7 struct node* next; // 下一节点 8 }ListNode; 9 10 extern int CSort(); 11 12 ListNode *root = NULL;// 13 14 int main(int argc, char