头插法与尾插法

一头文件

#ifndef       _SEQUENCELIST_H
#define       _SEQUENCELIST_H



#define   SIZE     10
#define   SUCCESS  10001
#define   FAILURE  10002


typedef  int elemtype;

struct node
{
	elemtype data;   //数据域
	struct node *next;   //指针域
};
typedef struct node Node;
int LinkInit(Node **l);
int Headinsert(Node *l, elemtype e);
int LinkTraverse(Node *l,void(*p)(elemtype));
int Tailinsert(Node *l, elemtype e);

#endif

二 子函数

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

int LinkInit(Node **l)
{
	*l = (Node *)malloc(sizeof(Node) * 1);   //分配头结点   l 就是头指针
	if (NULL == *l)
	{
		return FAILURE;
	}

	(*l)->next = NULL;    //头结点指针域为

	return SUCCESS;
}
int Headinsert(Node *l, elemtype e)
{
    if(l == NULL)
    {
        return FAILURE;
    }
    Node *q = l;
    
    Node *p;
    p= (Node *)malloc (sizeof(Node));
    p->data = e;
    p->next = q->next;
    q->next = p;
    return SUCCESS;
}
int LinkTraverse(Node *l,void(*p)(elemtype))
{
    if(NULL== l)
    {
        return FAILURE;
    }
    Node *q=l;
    while(q->next)
    {
        q=q->next;
        p(q->data);
    }
    return SUCCESS;
}
int Tailinsert(Node *l, elemtype e)
{
    if(l==NULL)
    {
        return FAILURE;
    }
    Node *q= l;
    Node *p;
    p=(Node*)malloc(sizeof(Node*));
    p->data=e;
    p->next= NULL;
    while(q->next)
    {
        q=q->next;
    }
    q->next = p;
    return SUCCESS;
}

三 main函数

#include "LinkList.h"
#include <stdio.h>
void print(elemtype e)
{
	printf("%d ", e);
}


int main()
{
	int ret, i;
	Node *first = NULL;   //头指针

//	srand(time(NULL));

	ret = LinkInit(&first);
	if (ret == FAILURE)
	{
		printf("Init Failure!\n");
	}
	else
	{
		printf("Init Success!\n");
	}
    for(i= 0;i<10;i++)
    {
        ret = Headinsert(first,i);
        if(ret == FAILURE)
        {
            printf("Headinsert Failure!\n");
        }
        else
        {
            printf("Headinsert  Success!\n");
        }
    }
    ret= LinkTraverse(first, print);
        if(ret==FAILURE)
        {
            printf("\n Traverse Failure!\n");
        }
        else
        {
            printf("\n Traverse Success!\n");
        }
    for(i= 0;i<10;i++)
    {
        ret= Tailinsert(first, i);
        if(ret == FAILURE)
        {
            printf("Tailinsert Failure !\n");
        }
        else
        {
            printf("Tailinsert  Success!\n");
        }
    }
    ret=LinkTraverse(first,print);
    {
        if(ret==FAILURE)
        {
            printf("\n Traverse Failure!\n");
        }
        else
        {
            printf("\n Traverse Success!\n");
        }
    }


   return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值