码迷,mamicode.com
首页 > 其他好文 > 详细

单链表的小例子(一)

时间:2014-10-09 01:13:37      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   数据   sp   div   

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义一个存放数据的结构体
typedef struct 
{
     int num;
    char name[20];
}DATA;
//定义链表
typedef struct node
{
    DATA data;
    struct node *next;
}NODE,*PNODE;

DATA getData();//模拟接受数据
PNODE createNode(DATA data);//创建节点
PNODE insertNode(PNODE head,DATA data);//插入节点
void showAllNode(PNODE head);//显示插入的所有节点
PNODE deleteNode(PNODE head);//删除节点
void freeAllNode(PNODE head);//释放节点
void fun();
int menu();
int main()
{
    PNODE head=NULL;//建立空表
    fun();
    return 0;
}
int menu()
{
    //system("clear");
    printf(
        "\n\t单链表系统"
        "\n\t1)插入链表"
        "\n\t2)删除链表"
        "\n\t3)显示链表"
        "\n\tq)退出"
    );
    printf("\n\t请输入选择:");
    char select=getchar();
    while((select!=\n)&& (getchar()==\n))
    {
        return select;
    }
}

void fun()
{
    PNODE head=NULL;
    int flag=1;
    while(flag)
    {
        switch(menu()){
            case 1:head=insertNode(head,getData());break;
            case 2:head=deleteNode(head);break;
            case 3:showAllNode(head);break;
            case q:flag=0;break;
            default:   printf("\t输入有错误!\n");
        }
        printf("\n\t回车继续!\n");
        getchar();
    }
    freeAllNode(head);
    head=NULL;
}
void freeAllNode(PNODE head)
{
    head=NULL;
}

PNODE deleteNode(PNODE head)//顺序删除节点
{
     PNODE p=head->next;//备份
    free(head);//释放
    return p;
}
void showAllNode(PNODE head)//显示插入的所有节点
{
    PNODE p=head;
    printf("\tNum Name\n");
    while(p!=NULL)
    {
        printf("\t%d %s\n",p->data.num,p->data.name);
        p=p->next;
    }
}
PNODE insertNode(PNODE head,DATA data)//顺序插入节点
{
    PNODE temp=createNode(getData());
    temp->next=head;
    return temp;
}

PNODE createNode(DATA data)//创建节点
{
    PNODE temp =(PNODE)malloc(sizeof(NODE));
    temp->data=data;
    temp->next=NULL;
    return temp;
}
DATA getData()
{
    static int n=0;
    n++;
    char str[20]={0};
    sprintf(str,"test-%d",n);
    DATA temp={n,""};
    //temp.name[0]+=1;
    strcpy(temp.name,str);
    return temp;
}

运行结果(在VS2010中实现,在Linux下也可以实现):

bubuko.com,布布扣

单链表的小例子(一)

标签:style   blog   http   color   io   ar   数据   sp   div   

原文地址:http://www.cnblogs.com/xinglei/p/4011987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!