zoukankan      html  css  js  c++  java
  • 链表

    写的一个链表

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 #define TRUE 1;
     5 #define FALSE 0;
     6 
     7 typedef struct Node 
     8 {
     9         int value;
    10         struct Node *next;
    11 }ST_Node;
    12 
    13 
    14 extern  ST_Node *creat_Linked_List(int Lenth);
    15 extern  int     insert_Node(ST_Node *current,int new_value);
    16 extern  int     print_list(ST_Node *current,ST_Node *New_Node);
    17 
    18 
    19 
    20 /*上面只是定义了一个结构体类型,并未实际分配内存空间
    21 
    22 只有定义了变量才分配内存空间*/
    coomon.h
     1 #include "common.h"
     2 
     3 int  main()
     4 
     5 {
     6 
     7         int Lenth;
     8         int insert_value;
     9         ST_Node *New_Node;
    10         ST_Node *root;
    11         
    12         printf("
     please input the lenth of the linked list:
    ");
    13         
    14         scanf("%d",&Lenth);
    15         
    16         New_Node = creat_Linked_List(Lenth);/*链表的头指针(head)来标记整个链表*/
    17         
    18         root = New_Node;
    19         printf("
     output the value of the node:
    ");
    20         
    21         print_list(root,New_Node);
    22 
    23         printf("
    input the number you want insert:
    ");
    24 
    25         scanf("%d",&insert_value);
    26         insert_Node(root , insert_value);
    27         
    28       printf("
     output the value of the node:
    ");
    29       root = New_Node;
    30         print_list(root,New_Node);
    31         
    32 
    33         return 0;
    34 }
     1 #include "common.h"
     2 
     3 /*create a list and the size is chageble*/
     4 ST_Node *creat_Linked_List(int Lenth)
     5 
     6 {
     7         
     8         int i;
     9         
    10         ST_Node *head,*New_Node,*Node;
    11         
    12         /*head用来标记链表,New Node总是用来指向新分配的内存空间,Node总是指向尾结点,并通过Node来链入新分配的结点*/
    13         
    14         int a;
    15         
    16         head=NULL;
    17         
    18         for(i=1;i<=Lenth;i++)
    19         
    20         {
    21         
    22             New_Node=(ST_Node *)malloc(sizeof(ST_Node));
    23             if(NULL == New_Node)
    24                 {
    25                     return FALSE;
    26                     printf("内存分配失败");    //内存分配失败 返回0;
    27                 }
    28             
    29             /*动态分配内存空间,并数据转换为(struct Node)类型*/    
    30             printf("
    please input the value of NO.%d:",i);
    31             scanf("%d",&a);    
    32             New_Node->value = a;    
    33             if(NULL == head)/*指定链表的头指针*/    
    34             {
    35                     head = New_Node;
    36                     Node = New_Node;    
    37             }    
    38             else
    39             {    
    40                     Node->next = New_Node;    
    41                     Node = New_Node;
    42             }    
    43             Node->next = NULL; /*尾结点的后继指针为NULL(空)*/
    44         }
    45         return head;/*返回链表的头指针*/
    46 
    47 }
    48 
    49 
    50 /*insert a node into the list*/
    51 int insert_Node(ST_Node *current,int new_value)
    52 {
    53         ST_Node  *previous;
    54         ST_Node  *new;
    55         while((current->value) < new_value)
    56         {
    57                 previous = current;
    58                 current = current ->next;
    59         }
    60 
    61         new = (ST_Node*) malloc(sizeof(ST_Node));
    62 
    63         new->value = new_value;
    64 
    65         new->next = current;
    66         previous->next = new;
    67 
    68     return TRUE;
    69 }
    70 
    71 int print_list(ST_Node *current,ST_Node *New_Node)
    72 {
    73       
    74         New_Node = current;
    75         while(New_Node)/*直到结点New_Node为NULL结束循环*/
    76         
    77         {
    78         
    79                 printf("%d ",New_Node->value);/*输出结点中的值*/
    80         
    81                 New_Node = New_Node->next;/*指向下一个结点*/
    82         
    83         }
    84         printf("
    
    ");
    85         return TRUE;
    86     }
    sub_func.c
  • 相关阅读:
    java 笔记(2) 接口作为引用数据类型
    linux 笔记(5)让vi或vim显示行数和不显示行数
    linux 笔记(4)Ubuntu 使用时vi编辑器时,不能使用backspace键来进行退格或者不能正常使用
    linux 笔记(3)sudo passwd 设置root用户的密码
    matlab笔记(1) 元胞结构cell2mat和num2cell
    linux 笔记(2) 目录直接强行删除rm -rf *(删除当前目录所有的内容)
    linux 笔记(1) ctrl+c,ctrl+z,ctrl+d
    C51单片机项目:红绿灯
    C51单片机项目:时钟
    java 笔记(1)在子类中,一定要访问父类的有参构造方法?
  • 原文地址:https://www.cnblogs.com/aidonzhang/p/5295193.html
Copyright © 2011-2022 走看看