动态链表的创建及使用

链表的创建及使用一直是一个小难题,今天我分享一下我的学习心得吧。
首先,要创建一个头结点。
struct node
{
int data;
struct node *next;
};

完成后分为4步:1、创建链表 2、输出链表 3、插入某一个数 4、删除某一个数
这就是一个简单链表的结构,当然,如果你想添加更多功能的话,可以自己加入,是它变得更加丰富多彩!
1、创建链表

SLIST *creat_slist(void);//创建链表
SLIST *creat_slist(void)
{
    int c;
    SLIST *h,*s,*r;
    h=(SLIST *)malloc(sizeof(SLIST));
    r=h;
    scanf("%d",&c);
    while(c!=-1)
    {
         s=(SLIST *)malloc(sizeof(SLIST));
         s->data=c;
         r->next=s;
         r=s;
         scanf("%d",&c);
    }
     r->next='\0';
     return h;
}

2、输出链表

void printf_slist(SLIST *h);//输出链表
void printf_slist(SLIST *h)
{
    SLIST *p;
    p=h->next;
    if(p=='\0') printf("Linklist is null!\n");
    else
        {
            printf("head");
            do
            {
                printf("->%d",p->data);
                p=p->next;
            }
            while(p!='\0');
            printf("end\n");
        }
}

3、插入某一个数

void insert_slist(SLIST *h,int x,int y);//插入某一个数
void insert_slist(SLIST *h,int x,int y)
{
    SLIST *s,*p,*q;
    s=(SLIST *)malloc(sizeof(SLIST));
    s->data=y;
    q=h;
    p=h->next;
    while(p!='\0'&&p->data!=x)
    {
        q=p;
        p=p->next;
    }
    s->next=p;
    q->next=s;

}

4、删除某一个数

void delete_slist(SLIST *h,int x);//删除某一个数
void delete_slist(SLIST *h,int x)
{
    SLIST *p,*q;
    q=h;
    p=h->next;
    while(p!='\0'&&p->data!=x)
    {
        q=p;
        p=p->next;
    }
    if(q->data==x)
    {
        q->next=p->next;
    }
}

5、主函数

int main(void)
{
    SLIST *h;
    int x,y,m;
    system("cls");
    scanf("%d%d",&x,&y);//y插入到x的前面
    scanf("%d",&m);//删除m
    h=creat_slist();
    printf_slist(h);
    insert_slist(h,x,y);
    printf_slist(h);
    delete_slist(h,m);
    printf_slist(h);
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值