C语言链表

#include<stdio.h>
#include<stdlib.h>
struct list
{
int data;
struct list *next;
};
struct list *head = NULL;
void Creatlist()
{
int i = 0, n = 10;
struct list p = NULL, q = NULL;
p = (struct list
)malloc(sizeof(struct list));
head = p;
p->data = 999;
for(i = 0; i < n; i++)
{
q = (struct list
)malloc(sizeof(struct list));
q->data = i;
p->next = q;
p = q;
printf(“p->next = %p\tp = %p\n”,p->next,p);
}
p->next = NULL;
}
void Insertlist(int num)
{
struct list *p = NULL, *q = NULL, k = NULL;
p = head;
q = (struct list
)malloc(sizeof(struct list));
q->data = 888;
int flag = 0;
while§
{
if( p->data == num)
{
flag = 1;
break;
}
p = p->next;
}
if(flag)
{
k = p->next;
p->next = q;
q->next = k;
}
else
{
printf(“Can’t find this note”);
}
}
void Deletelist(int num)
{
struct list *p = NULL, *q = NULL;
p = head;
if(head->data == num)
{
p = head;
head = p->next;
free§;

}
else
{
	while(p)
	{
		if(p->data == num)
		{
			q->next = p->next;
			free(p);
			break;
		}
		q = p;
		p = p->next;
	}
}

}
void Modifylist(int num1, int num2)
{
struct list* p = NULL;
p = head;
while§
{
if(p->data == num1)
{
p->data = num2;
break;
}
p = p->next;
}
}
void Printlist()
{
struct list *p = NULL;
p = head;
while§
{
printf("%d\t%p\t%p\n", p->data, p, p->next);
p = p->next;
}
}

int main()
{
Creatlist();
Printlist();
Insertlist(5);
Printlist();
Deletelist(6);
Printlist();
Modifylist(2,999445);
Printlist();
return 0;
}

/*#include<stdio.h>
#include<stdlib.h>
struct list //创建结点
{
int data;
struct list *next;
};
struct list *head = NULL; //头结点
void CreatList() //创建列表
{
int i = 0, n = 10;
struct list p = NULL,q = NULL;
p = (struct list
)malloc(sizeof(struct list));
head = p;
p->data = 999;
//printf(">>>%p\t%d\n", p -> next, p -> data);
for(i = 0; i < n; i++)
{
q = (struct list
)malloc(sizeof(struct list));
q->data = i;
p->next = q; //将两个结点连接起来
p = q; //q的地址赋给p,q进入下一个循环,开辟新结点.
printf(“p->next = %p q = %p\n”, p->next , q );
}
p->next = NULL; //最后一个结点的地址指向NULL
//printf("%p\t%d\n",p -> next,i);
}
void Printlist() //打印链表
{
struct list *p = NULL;
p = head; //链表的首地址赋给p
while§
{
printf("%3d\t%p\t%p\n", p->data, p, p->next);
p = p->next;
}
}
int main()
{
CreatList();
Printlist();
return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值