zoukankan      html  css  js  c++  java
  • 创建单链表(头插法、尾插法)

    1、头插法创建单链表(生成的链表中结点的顺序与输入的顺序相反)

    //头插法创建单链表
    Status CreateList_L(LinkList &L,int n){//前提L已经初始化完成 
        LinkList p;
        int a;
        for(int i=0;i<n;i++){
            p = (LinkList)malloc(sizeof(Node));
            scanf("%d",&a);
            p->data = a;
            p->next = L->next;//p指向下一个 
            L->next = p;//再将p给单链表L的表头 
        }
        return OK; 
    } 

    2、尾插法创建单链表(与输入的顺序相同)

    //尾插法创建单链表
    Status CreateList_Tail(LinkList &L, int n){
        LinkList p,r;
        r = L;
        int a;
        for(int i=0;i<n;i++){
            p = (LinkList)mallco(sizeof(Node));
            scanf("%d",&a);
            p->data = a;
            r->next = p;
            r = p; 
        }
       r->next = NULL;
    return OK; }

     3、综合实现

     1 #include<stdio.h>
     2 #include<malloc.h>
     3 #include<stdlib.h>
     4 #include<string.h>
     5 #define OVERFLOW -2
     6 typedef struct Node{
     7     int data;
     8     struct Node *next;
     9 }Node,*LinkList;
    10 
    11 int ListInit_L(LinkList &L){
    12     L = (LinkList)malloc(sizeof(Node));
    13     if(!L)
    14         exit(OVERFLOW);
    15     L->next = NULL;
    16     return 1;
    17 }
    18 
    19 
    20 void CreatList_head(LinkList &L, int n){
    21     LinkList p;
    22     int a;
    23     for(int i = 0; i < n; i++){
    24         p = (LinkList)malloc(sizeof(Node));
    25         scanf("%d",&a);
    26         p->data = a;
    27         p->next = L->next;
    28         L->next = p;
    29     }
    30 }
    31 
    32 void CreatList_tail(LinkList &L, int n){
    33     LinkList p,r;
    34     r = L;
    35     int a;
    36     for(int i = 0; i < n; i++){
    37         p = (LinkList)malloc(sizeof(Node));
    38         scanf("%d",&a);
    39         p->data = a;
    40         r->next = p;
    41         r = p;
    42     }
    43     r->next = NULL;
    44 }
    45 
    46 void printList(LinkList &L){//输出单链表 
    47     LinkList q;
    48     q = L->next;
    49     while(q){ 
    50         printf("%d ",q->data);
    51         q = q->next;
    52     }  
    53 }
    54 
    55 int main(){
    56     LinkList L;
    57     ListInit_L(L);
    58     printf("请选择:
    
    1、头插法创建单链表
    2、尾插法创建单链表
    
    请你选择创建方式:");
    59     int x;
    60     scanf("%d",&x);
    61     if(x==1){
    62         printf("头插法创建单链表:
    
    请你输入创建数据元素的个数:");
    63         int n;
    64         scanf("%d",&n); 
    65         CreatList_head(L,n);//头插法创建单链表
    66         printList(L);//输出 
    67     } 
    68     if(x==2){
    69         printf("尾插法创建单链表:
    
    请你输入创建数据元素的个数:");
    70         int n;
    71         scanf("%d",&n); 
    72         CreatList_tail(L,n);//头插法创建单链表
    73         printList(L);//输出 
    74     }
    75     return 0; 
    76 }

  • 相关阅读:
    应用程序域的用法
    WCF 暴露元数据的配置
    无svc文件发布WCF服务到IIS上
    C#输出毫秒
    [一点一滴学英语]20051017
    从其他平台转向Windows,MS提供了很多便利;那反过来呢?
    Ward Cunningham加入Eclipse?
    [导入][链接]Linux常用命令/快捷键
    [导入][号外]Oracle to buy JBoss, Zend and Sleepycat?
    [导入][链接]Google开始向Linux移植其Windows应用程序?
  • 原文地址:https://www.cnblogs.com/geziyu/p/9892659.html
Copyright © 2011-2022 走看看