数据结构链表的简单处理

数据结构链表的简单处理
代码:

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
//单链表类型定义
typedef struct node	
{
	int	 data;
	struct node	 *next;
}LNode, *LinkList; 
//单链表的创建  (尾插法)  
LinkList Creat_LinkList( )
{      LNode *s,*r;int x;   
       LinkList H = (LinkList) malloc(sizeof(LNode));
       H->next = NULL;r=H;
       scanf("%d",&x);
       while(x!=-1) 
	   {    s = (LinkList) malloc(sizeof(LNode));
		    s->data=x;
            s->next = r->next;
            r->next = s;
			r=s;
            scanf("%d",&x);
       }return H;
}
//按序号查找
LinkList Get_LinkList(LinkList H,int k)
{     LNode *p;
      int j=1;
	  p=H->next;
      while(p->next!=NULL && j<k) 
      {      p=p->next;
             j++;
       }
       if(j==k)return p;
       else return NULL;
}
//单链表的插入
int Insert_LinkList(LinkList H, int i, int x)
{      

      //插入代码;
	LinkList p, q, s;
	q = Get_LinkList(H,i-1);
	if(q == NULL)
	{
		printf("第%d个节点不存在", i - 1);
		return ERROR;
	}
	else
	{
		if(q->next == NULL)
		{
			printf("第%d个节点不存在", i);
			return ERROR;
		}
		else
		{
			s= (LinkList) malloc (sizeof(LNode));
			s->data = x;
			p = q->next;
			q->next = s;
			s->next = p;
			return OK;
		}
	}
} 
//单链表的删除
int Del_LinkList(LinkList H,int i)
{
	
       //删除代码;
	LinkList p, q;
	q = Get_LinkList(H,i-1);
	if(q == NULL)
	{
		printf("第%d个节点不存在", i - 1);
		return ERROR;
	}
	else
	{
		if(q->next == NULL)
		{
			printf("第%d个节点不存在", i);
			return ERROR;
		}
		else
		{
			p = q->next;
			q->next = p->next;
			free(p);
			return OK;
		}
	}
} 

//单链表的输出
void Print_LinkList(LinkList H)
{
	LNode *p;
	p=H->next;
	while(p!=NULL)
	{
		printf("%d->",p->data);
		p=p->next;
	}
	printf("end\n");
}

main()
{
	LinkList H,p;
	int i,num,x;
        H=Creat_LinkList( );
	Print_LinkList(H);
    
	printf("请输入要插入的序号:\n");
	scanf("%d",&num);
        printf("请输入要插入的值:\n");
	scanf("%d",&x);
       if(Insert_LinkList(H,num,x)==OK)
	{	printf("插入成功!\n");Print_LinkList(H);}
	else
		printf("插入失败!\n");
	
    //调用删除代码;
	printf("请输入要删除的序号:\n");
	scanf("%d", &num);

	if(Del_LinkList(H,num)==OK)
	{	
		printf("删除成功!\n");
		Print_LinkList(H);
	}
	else
		printf("删除失败!\n");

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值