用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

单链表的插入与删除操作

2017-12-13 作者: 黄泥湖雇佣兵举报

[c]代码库

//单链表的插入与删除 
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
	char data;
	struct node *next;
}LNode;

//创建单链表
LNode *create()
{
	LNode *head,*p,*q;
	char x;
	head=(LNode*)malloc(sizeof(LNode));
	head->next=NULL;
	p=head;
	q=p;
	printf("请输入数据: \n");
	scanf("%c",&x);
	while(x!='\n')
	{
		p=(LNode*)malloc(sizeof(LNode));
		p->data=x;
		p->next=NULL;
		q->next=p;
		q=p;
		scanf("%c",&x); 
	}
	return head;
 } 

//1 输出单链表
void print(LNode*head)
{
	LNode*p=head->next;
	
	while(p!=NULL)
	{
		printf("%c->",p->data);
		p=p->next;
	 } 
	 printf("\n");
 } 
 

// 2在第i个位置插入结点x
LNode *insert(LNode*head,int i,char x)
{
	LNode *p=head,*s;
	int j=0;
	while(p!=NULL&&j<i-1)
	{
		p=p->next;
		j++;
	} 
	if(p==NULL)
		printf("False\n");
	else
		{
			s=(LNode*)malloc(sizeof(LNode));
			s->data=x;
			s->next=p->next;
			p->next=s;
		}
	return head;		
	
 } 
// 3删除第i个结点
LNode *del(LNode *head,int i)
{
	LNode *p=head,*s;
	int j=0;
	while(p!=NULL&&j<i-1)
	{
		p=p->next;
		j++;
	} 
	
	if(p==NULL)
		printf("False\n");
	else
	{
		s=p->next;
		p->next=s->next;
		free(s); 
	}
	return head;
} 

int main()
{
	LNode *h;
	h=create();
	print(h);
	
	int i;
	char x;
	printf("输入要插入的位置i和值x:(用逗号隔开)\n"); 
	scanf("%d,%c",&i,&x);
	insert(h,i,x);
	print(h);
	printf("输入要删除的结点的位置i:\n"); 
	scanf("%d",&i);
	del(h,i);
	print(h);
	return 0; 
}

[代码运行效果截图]


单链表的插入与删除操作


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...