美文网首页
链表(20161221)

链表(20161221)

作者: Hassan_chao | 来源:发表于2016-12-22 20:41 被阅读7次
#include<stdio.h>                  
#include<stdlib.h>                      
#include<string.h>
#include<time.h>
#include<unistd.h>
#define LEN sizeof(STU)    //宏定义
typedef struct student      //定义链表
{
    int ID;
    char name[32];
    struct student *next;
}STU;
//添加节点
STU* add_node(STU* head)
{
    STU* temp=(STU*)malloc(LEN);
    printf("input ID:");
    scanf("%d",&temp->ID);
    printf("input name:");
    scanf("%s",temp->name);
    temp->next=NULL;
    temp->next=head->next;
//将temp所指向的空间添加到链表上
    head->next=temp;
    temp=NULL;

    return head;
}

//遍历程序输出
void show_link(STU *head)
{
    if (NULL==head->next)
{
printf("链表为空");
return;
}else{
    STU *p=head->next;
    printf("\tID\tname\n");
    while(p!=NULL)
    {
        printf("\t%d\t%s\n",p->ID,p->name);
        p=p->next;
    }
}
return ;
}
//创建头结点
STU *create_link(STU *head)
{//若分配空间失败,则返回NULL
    head=(STU *)malloc(LEN);
//判断节点是否分配空间成功
if(NULL==head)
    {
    //重新分配空间
    head=(STU *)malloc(LEN);
    return head;
    }
//将头结点返回
printf("创建链表成功!!!\n");
sleep(2);
return head;
}
//头删程序
STU *delete_head(STU *head)
{
    if(NULL==head->next)
{
printf("\t链表为空,无数据可删\n");
sleep(5);
return head ;
}
//定义temp指针指向链表的第一个节点
    STU *temp=head->next;
//头删开始
head->next=temp->next;
free(temp);
temp=NULL;
return head;
}
//修改节点值
STU* modify_node(STU *head)
{

char name[32];
printf("请输入要修改的名:");
scanf("%s",name);
STU *p=head->next;
for(;p!=NULL;p=p->next)
    {
        //比较用户名是否存在,若存在则为要修改的节点
        if(strcmp(name,p->name)==0)
        {
            printf("\t该用户的信息为:\n");
            printf("name:%s\nID:%d\n",p->name,p->ID);
            printf("请输入修改后的信息:");
            scanf("%d",&p->ID);
            return head;
        }
        
    }
if(p==NULL)
    printf("没有该用户\n");
return head;
}

//查找节点值
void find_node(STU *head)
{
char name[32];
printf("请输入要查找的名:");
scanf("%s",name);

STU *p=head->next;

for(;p!=NULL;p=p->next)
    {
        //比较用户名是否存在
        if(strcmp(name,p->name)==0)
        {
            printf("\t该用户的信息为:\n");
            printf("name:%s\nID:%d\n",p->name,p->ID);
            
            return ;
        }
        
    }
if(p==NULL)
    printf("没有该用户\n");
return ;
    
}



//选择菜单
void menu()
{

    //定义头节点
    STU *head=NULL;
    int choice;
    while(1)
{
    system("clear");//清屏
    printf("\t\t1.创建链表\n");
    printf("\t\t2.添加节点\n");
    printf("\t\t3.删除节点\n");
    printf("\t\t4.修改节点值\n");
    printf("\t\t5.查找节点\n");
    printf("\t\t6.查看链表\n"); 
    printf("\t\t0.退出\n");
    printf("\t请选择\n:");
    scanf("%d",&choice);
    
    switch(choice)
    {
    case 1:
        head=create_link(head);
        printf("创建成功\n");
        break;
    case 2:
        {
        int i=0;
        for(i=0;i<5;i++)//默认5个
            head=add_node(head);
        printf("添加成功\n");
        break;
        }
    case 3:
        {
        head=delete_head(head); 
        break;
        }
    case 4:
        head=modify_node(head);
        break;
    case 5:
        find_node(head);
        sleep(5);
        break;
    case 6:
        {
        show_link(head);
        sleep(6);
        break;
        }
    case 0:
        {exit(1);//退出程序
        break;}
    default:
        {printf("\t请重新选择!!\n");
        sleep(2);//停顿两秒
        break;
        }
    }
}
return ;
}


int main()
{//创建头节点
int i;
STU *head=(STU*)malloc(sizeof(STU));
head->next=NULL;
//添加节点
//for(i=0;i<3;i++)
//head=add_node(head);
//遍历链表
//show_link(head);
//调用操作菜单:menu()
menu();
return 0;

}

相关文章

  • 链表(20161221)

  • 20161221

    时间总是过得如此之快,看着这世界,我伸出双手,却是一片虚无。我抓不住从指缝流逝的时间,也抓不住从身边离开的人啊。

  • 20161221

    在网上买的阔腿裤感觉质量好差,但已经穿过了也不好退,算了,就随便穿穿吧。不过买的雪地靴子特别好看耶,外形是匡威高帮...

  • 20161221

    读了罗银胜的《杨绛转》,发觉人的一生一路走来竟经历了那么多,可能在每个人一步步向前走时未曾发觉,待回头看时,才看到...

  • 20161221

    日记第九天 昨天居然断了一天。真是不应该,生活作息变化确实容易搞忘,倒也说明我自己本身不够重视。 今天买了一本拖延...

  • 20161221

    16年马上就要过去了,同样离我而去的还有18岁到28岁的黄金十年,想想自己这十年的路走的很艰辛,也是因为自己让自己...

  • 思科ACI2016-ACI2.0设计指南

    20161221 CZL思科又发布了 ACI 2.0 。 Cisco Application Centric In...

  • 随笔---20161221

    我们都那么期待“诗和远方”!可是每一个今天,不就是你昨天的远方吗?哪些所谓的“诗和远方”,只是因为你身体已经到了今...

  • 20161221《妹妹》

    早上妹妹问:为什么林黛玉这么美,身材这么好,又这么有才华,却整天这么悲观,她有笑过吗?我身材这么胖,我都还这么乐观...

  • 20161221随笔

    敬畏# 虽然人类占据在了这个星球上食物链的顶端,虽然人类已经能够上天入地,但是从我们每个个体的角度去看,人其实很渺...

网友评论

      本文标题:链表(20161221)

      本文链接:https://www.haomeiwen.com/subject/eduhvttx.html