大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C技巧 > 单链表的相关操作代码

单链表的相关操作代码(1)

关键词:链表操作代码  阅读(1132) 赞(17)

[摘要]本文是对单链表的相关操作的讲解,与大家分享。

单链表的创建及相关的操作.(单链表的创建,删除,插入,排序,逆置,测长)
第一步:创建单链表的节点

 typedef struct Node
 {
     int     data;
     struct  node* next;
 }node,*pnode;//node = struct Node,pnode = struct node*

第二步:创建链表

 //创建一个新的链表,并返回头指针
 pnode create_list()
 {
     int data;
     pnode pHead = (pnode)malloc(sizeof(node));
     pnode pCurrent = pHead;
     pCurrent->next = NULL;
     if(NULL == pHead)
     {
         printf("pHead malloc failed !\n");
         exit(-1);
     }
     printf("Input data (q to quit):\n");
     while(scanf("%d",&data)==1)
     {
         pnode pnew = (pnode)malloc(sizeof(node));
         if(NULL == pnew)
         {
             printf("malloc failed!\n");
             exit(-1);
         }
         pnew->data = data;
         pCurrent->next = pnew;
         pnew->next = NULL;
         pCurrent = pnew;
     }
     return pHead;
 }

第三步:遍历这个链表并打印

 //遍历链表
 void travel_list(pnode pHead)
 {
     pnode pCurrent = pHead->next;
     printf("the list are :\n");
     while(pCurrent != NULL)
     {
      printf("%d ",pCurrent->data);
      pCurrent = pCurrent->next;
     }
     printf("\n");
 }

第四步:单链表的插入
在链表中插入你个节点,可能有四种情况
①在链表的中间位置插入
②在链表的起始位置插入
③在链表的尾部插入
④原链表为空,即插入到起始位置,有时结束位置

 //在链表的第i个位置插入元素value
 pNode insert(pNode pHead, int value, int i)
 {
     pNode pre = pHead;
     for (int k = 1; k < i;k++)
     {
         pre = pre->link;
     }
     pNode pnew = (pNode)malloc(sizeof(pNode));
     pnew->data = value;
     /*
        pnew->link = pre->link;
        pre->link  是当前节点,即让新建的节点指向当前节点
        再让前驱结点指向新建的节点
        等同于
        pNode pcurrent;//当前节点
        pnew->link = pcurrent;
        pre->link = pnew;
        */
     pnew->link = pre->link;
     pre->link = pnew;
     return pHead;
 }

第五步:删除

«上一页12下一页»


相关评论