• 文章中心
  • 电脑u盘装系统教程,单链表啲创建、计数打印、删

    作者:侠客 -------------- 文章来源:u盘装系统 发布时间:2013-11-27 00:10点击:

    u盘装系统制作

    单链表啲创建、计数打印、删除与插入操作,提供四轮删除与插入操作,gcc编译通过。

    1 #includestdio.h>

    2 #includestdlib.h>/*使用到其中啲malloc和exit函数*/

    3 #define times 4/*用于循环次数啲控制*/

    4

    5 static int N=4;/*静态全局变量,用于控制单链表长度*/

    6

    7 typedef struct _person

    8 {

    9char name[12];

    10int age;

    11struct _person *next;

    12 }stud;

    13

    14 stud *Create(int num)/*创建单链表啲函数,num为单链表de长度*/

    15 {

    16int i;

    17stud *h,*p,*q;/* h为头指针,指向单链表de第一个节点*/

    18h=(stud*)malloc(sizeof(stud));

    19if(h!=NULL)

    20{

    21p=h;

    22for(i=0;inum;i++)

    23{

    24q=(stud*)malloc(sizeof(stud));/* q为指向新建节点de指针*/

    25if(q!=NULL)

    26{

    27printf("依次输入第%d个人de姓名和年龄:\n",i+1);

    28scanf("%s%d",q->name,&q->age);

    29q->next=NULL;/*创建新节点完毕*/

    30p->next=q;

    31p=q;

    32}

    33}

    34}

    35printf("\n");

    36return(h);

    37 }

    38

    39 stud *Delete(stud *person,int post)/*删除单链表指定位置节点啲函数*/

    40 {

    41int i;

    42stud *cur,*pre;

    43cur=person;

    44

    45if(0==post)/*如果输入啲值为0,则不删除任何节点*/

    46{

    47printf("\n注意:您决定不删除任何节点!!!\n\n");

    48return(person);

    49}

    50else if(post>N||post0)/*如果输入啲值大于单链表长度或者小于0,程序结束*/

    51{

    52printf("输入有误,程序终止。\n");

    53exit(1);

    54}

    55else

    56{

    57if(1==post)/*在单链表头部删除的情况*/

    58{

    59cur=cur->next;

    60person->next=cur->next;

    61free(cur);

    62}

    63else/*在其它位置删除的情况*/

    64{

    65for(i=2;ipos用u盘装xp系统t+1;i++)/*使pre成为要插入位置的上一位置的节点*/

    66{

    67cur=cur->next;

    68pre=cur;

    69}

    70cur=cur->next;

    71pre->next=cur->next;

    72free(cur);

    73}

    74return(person);

    75}

    76 }

    77

    78 stud *Insert(stud *person,int post)/*在单链表指定位置插入新的节点的函数*/ 计算机

    79 {

    80int i;

    81stud *cur,*pre,*node;

    82

    83if(post>N+1||post1)/*如果输入的值大于单链表长度加1或者小于1,程序结束*/

    84{

    85printf("输入错误,程序终止。\n");

    86exit(1);

    87}

    88

    89if(person!=NULL)

    90{

    91cur=person;

    92node=(stud*)malloc(sizeof(stud));

    93if(node!=NULL)

    94{

    95printf("请输入新人的姓名和年龄:\n");

    96scanf("%s%d",node->name,&node->age);/*为新的节点输入数据内容*/

    97

    98if(1==post)

    99{

    100node->next=person->next;

    101person->next=node;

    102}

    103else

    104{

    105for(i=2;ipost+2;i++)

    106{

    107pre=cur;

    108cur=cur->next;

    109}

    110node->next=pre->next;

    111pre->next=node;

    112}

    113}

    114}

    115printf("\n");

    116return(person);

    117 }

    118

    119 void Print(stud *person)

    120 {

    121int post=1;

    122stud *cur;

    123cur=person->next;

    124printf("当前的节点信息如下所示:\n");

    125while(cur!=NULL)

    126{

    127printf("第%d个人的姓名是:%s,年龄为:%d\n",post,cur->name,cur->age);

    128cur=cur->next;

    129post++;

    130}

    131N=--post;

    132printf("当前单链表的长度是:%d\n\n",N);

    133 }

    134

    135 int main()

    136 {

    137int number,post,i;

    138stud *head;

    139head=Create(N);

    140Print(head);

    141

    142for(i=0;itimes;i++)

    143{

    144printf("请输u盘装系统下载入要删除的节点的位置:\n");

    145scanf("%d",&number);

    146Delete(head,number);

    147Print(head);计算机基础知识

    148

    149printf("请输入要插入节点的位置(此位置是指预期插入成功后新节点在单链表中的位置):\n");

    150scanf("%d",&post);

    151Insert(head,post);

    152Print(head);

    153

    154printf("\n注意:剩余输入轮数为:%d!!!!!\n\n",(times-(i+1)));

    155}

    156

    157return 0;

    158 }

    怎样用u盘装xp系统 本文由www.upzxt.com整理!