频道栏目
首页 > 程序开发 > 软件开发 > C语言 > 正文
数据结构C语言>3基本链表>3-9具有头结点的链表
2011-07-02 06:41:08           
收藏   我要投稿

具有头结点的链表,就是有一个虚构的结点,链表的中第一个结点其实是第二个结点。

#include<stdlib.h>

struct llist
{
    int num;
    struct llist *next;
};
typedef struct llist node;
typedef node *llink;

//输出结点值
void printllist(llink head)
{
    llink ptr;
    ptr=head->next;
    while(ptr !=NULL)
    {
        printf("%d ",ptr->num);
        ptr=ptr->next;
    }
    printf(" ");
}

//找结点
llink findnode(llink head,int value)
{
    llink ptr;
    ptr=head->next;
    while(ptr !=NULL)
    {
        if(ptr->num==value)
        {
            return ptr;
        }
        ptr=ptr->next;
    }
    return NULL;
}

//创造链表
llink createllist(int *array,int len)
{
    llink head;
    llink ptr,ptr1;
    int i;
   
    head=(llink)malloc(sizeof(node));
    if(head==NULL)
    {
        printf("内存分配失败! ");
        return NULL;
    }
    ptr=head;
    for(i=0; i<len;i++)
    {
        ptr1=(llink)malloc(sizeof(node));
        if(!ptr1)
        {
            return NULL;
        }
        ptr1->num=array[i];
        ptr1->next=NULL;
        ptr->next=ptr1;
        ptr=ptr1;
    }
    return head;
}

//插入结点
llink insertnode(llink head,llink ptr, int nodevalue,int value)
{
    llink new;
    new=(llink)malloc(sizeof(node));
    if(!new)
    {
        return NULL;
    }
    new->num=value;
    new->next=NULL;
    //找结点
    llink getnode;
    getnode=findnode(head,nodevalue);
    //如果没找到结点,就是插在第一个结点之前
    if(getnode ==NULL)
    {
        new->next=ptr->next;
        ptr->next=new;
    }
    else//找到指定结点,就插在指定结点后面
    {
        new->next=getnode->next;
        getnode->next=new;
       
    }
    return head;
}

 

 

int main(int argc,char *argv[])
{
    int llist1[6]={1,2,3,4,5,6};
    llink head;
   
    head=createllist(llist1,6);
    if(!head)
    {
        exit(1);
    }
    printf("原来的链表:");
    printllist(head);
    head=insertnode(head,head,6,23);
    printf("插入后的链表:");
    printllist(head);
}

点击复制链接 与好友分享!回本站首页
上一篇:统计字符串中每个字符出现的次数
下一篇:数据结构C语言>3基本链表>3-5链表的结点删除
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站