zoukankan      html  css  js  c++  java
  • 单链表的创建、插入、删除、倒置操作

    /*-----------------------------------------------------*/
    /*--------------单链表的创建、插入、删除、倒置操作-----------*/
    /*--------------Written by redfire250-----2005.5.10----*/
    /*-----------------------------------------------------*/
    #include<malloc.h>
    #include<stdio.h>
    #define null 0
    struct student
    {
    long Number;
    char Name[20];
    long Score;
    struct student *Next;
    };
    int n=0;/*n为全局变量,用来计算链表的结点个数*/
    /*-----------------------------------------*/
    /*--------------创建结点函数Creat()--------*/
    /*-----------------------------------------*/
    struct student *Creat()
    {
    struct student *p1;
    struct student *p2;
    struct student *head=null;
    p1=p2=(struct student *)malloc(sizeof(struct student));/*开辟一段可用内存单元*/
    printf("please input the student's Number Name and the Score:\n");
    scanf("%ld%s%ld",&p2->Number,p2->Name,&p2->Score);
    while(p2->Number!=0)
    {
    n++;
    if(n==1) /*是否开辟的是第一个结点*/
    head=p2;
    else
    p1->Next=p2;
    p1=p2;
    p2=(struct student *)malloc(sizeof(struct student));
    printf("Input the Number the Name and the Score:\n");
    scanf("%ld%s%ld",&p2->Number,p2->Name,&p2->Score);
    }
    p1->Next=null;
    return(head);
    }
    /*------------------------------------------*/
    /*--------------查看链表内容函数View()------*/
    /*------------------------------------------*/
    View(struct student *head)
    {
    struct student *p;
    p=head;
    while(p->Next!=null)
    {
    printf("%ld %s %ld\n",p->Number,p->Name,p->Score);
    p=p->Next;
    }
    printf("%ld %s %ld\n",p->Number,p->Name,p->Score);
    }
    /*-------------------------------------------------*/
    /*--------------插入结点函数(前插)Insert()-------*/
    /*-------------------------------------------------*/
    Insert(struct student *head,int Num) /*head为链表头指针,Num插入链表位置*/
    {
    int t=1;
    struct student *p1,*p2;
    p1=head;
    if (Num>n||Num<0)
    {
    printf("input error!!!\n");
    return 0;
    }
    while(t<Num-1) /*找到要插入结点的前一个结点*/
    {
    p1=p1->Next;
    t++;
    }
    p2=(struct student *)malloc(sizeof(struct student));
    printf("Input the Number the Name and the Score:\n");
    scanf("%ld%s%ld",&p2->Number,p2->Name,&p2->Score);
    p2->Next=p1->Next;
    p1->Next=p2;
    n++;
    }
    /*------------------------------------------*/
    /*------------ 删除结点函数Delnode()--------*/
    /*-----------------------------------------*/
    Delnode(struct student *head,int node)
    {
    int t=1;
    struct student *p1,*p2;
    p2=head;
    if (node>n||node<1)
    {
    printf("error!!! The node is not exist!");
    return 0;
    }
    while(t<node-1) /*找到要删除结点的前一个结点*/
    {
    p2=p2->Next;
    t++;
    }
    p1=p2->Next->Next; /*找到要删除结点的后一个结点*/
    free(p2->Next); /*释放要删除的结点空间(删除)*/
    p2->Next=p1; /*前一结点指向后一结点*/
    n--;
    }
    /*-------------------------------------------------*/
    /*--------------逆序重组链表Invert()-------*/
    /*-------------------------------------------------*/
    struct student *Invert(struct student *head)
    {
    struct student *p1,*p2;
    p1=head;
    p2=p1->Next;
    head=p2->Next;
    p1->Next=null;
    while(head->Next!=null)
    {
    p2->Next=p1;
    p1=p2;
    p2=head;
    head=head->Next;
    }
    head->Next=p2;
    p2->Next=p1;
    return head;
    }
    main()
    {
    int number1,number2;
    struct student *head;
    head=Creat();
    View(head);
    printf("the n that you want to insert:\n");
    scanf("%d",&number1);
    Insert(head,number1);
    View(head);
    printf("the node that you want to DELETE:\n");
    scanf("%d",&number2);
    Delnode(head,number2);
    View(head);
    printf("Inverte the list:\n");
    View(Invert(head));
    getch();
    }

  • 相关阅读:
    在Asp.Net头部动态加载css和js文件的方法
    关于Ajax开发中Response的ContentType的一些问题
    C#获取存储过程的返回值
    在填写表单中输入全角数字的解决方案
    Eclipse3.7中搭建Android开发环境
    THinkPHP 获取客户端IP 与IP地址查询
    php 操作数组 (合并,拆分,追加,查找,删除等)
    HTML5 LocalStorage 本地存储
    [javascript] IE与火狐下window.event对象的区别
    今天有人问是否可以使用vs2005开发,回答了一下,记录下来
  • 原文地址:https://www.cnblogs.com/hsapphire/p/1690835.html
Copyright © 2011-2022 走看看