• 链表基本操作(C语言)


    #include <stdio.h>
    #include <stdlib.h>

    typedef struct _list
    {
    int data;
    struct _list *next;
    }list,*plist;

    plist create_list(int *a,int len)
    {
    plist head=NULL;
    plist ptr=NULL;
    plist newnode=NULL;
    head=(plist)malloc(sizeof(list));
    head->data=a[0];
    head->next=NULL;
    ptr=head;
    for(int i=1;i<10;i++)
    {
    newnode=(plist)malloc(sizeof(list));
    newnode->data=a[i];
    newnode->next=NULL;
    ptr->next=newnode;
    ptr=ptr->next;
    }
    return head;
    }

    plist insert_node(plist head,int data,int pos)
    {
    plist node,ptr;
    ptr=head;
    node=(plist)malloc(sizeof(list));
    node->data=data;
    node->next=NULL;
    if(pos==0)
    {
    node->next=head;
    return node;
    }
    else
    {
    for(int i=0;i<pos && ptr->next != NULL;i++)
    {
    ptr=ptr->next;
    }
    node->next=ptr->next;
    ptr->next=node;
    return head;
    }
    }

    void print_list(plist head)
    {
    plist ptr=head;
    while(ptr != NULL)
    {
    printf("%d ",ptr->data);
    ptr=ptr->next;
    }
    printf("\n");
    }

    plist delete_node(plist head,int pos)
    {
    plist ptr=head;
    plist temp=NULL;
    if(pos==0)
    {
    ptr=head->next;
    free(head);
    return ptr;
    }
    else
    {
    for(int i=1;i<pos-1 && ptr->next->next != NULL;i++)
    {
    ptr=ptr->next;
    }
    if(ptr->next != NULL)
    {
    temp=ptr->next;
    ptr->next=temp->next;
    free(temp);
    return head;
    }
    else
    {
    free(ptr->next);
    ptr->next=NULL;
    }
    }
    }

    plist reverse_list(plist head)
    {
    plist a,b,c;
    a=NULL;
    b=head;
    c=head->next;

    while(b->next != NULL)
    {
    b->next=a;
    a=b;
    b=c;
    c=c->next;
    }
    b->next=a;
    return b;
    }

    int main(void)
    {
    int a[10];

    for(int i=0;i<10;i++)
    {
    a[i]=i;
    }
    plist head=NULL;
    head=create_list(a,10);
    print_list(head);

    head=insert_node(head,4,10);
    print_list(head);

    head=delete_node(head,12);
    print_list(head);

    head=reverse_list(head);
    print_list(head);
    }

  • 相关阅读:
    移动端开发常见的坑
    javascript的原始类型(primitive type)之间的关系。
    微信小程序学习:开发注意点
    canvas学习(一):线条,图像变换和状态保存
    css模仿微信弹出菜单
    html5 canvas绘制环形进度条,环形渐变色仪表图
    vue学习笔记(三):vue-cli脚手架搭建
    nodejs基础学习
    css3美化radio样式
    基于angular+bower+glup的webapp
  • 原文地址:https://www.cnblogs.com/linyilong3/p/1863337.html
Copyright © 2020-2023  润新知