1利用链表打印1-10的元素
#include<stdio.h>
//定义一个结构体变量
//既存放一个变量,又把首个节点的地址存入,方便之后通过head的地址找其他变量的地址
typedef struct node
{
int a;
struct node* next;
};
int main()
{
struct node head, *p, *q;
int i, n;
q = &head;//q取首元素地址
for (i = 1; i <= 10; i++)//设置循环
{
malloc函数是c语言的函数,指申请一个你需要的变量大小的空间,单位是字节
p = malloc(sizeof(struct node));//空间地址是随机的
p->a = i;//将i的值存入p的a元素里
q->next = p;//将p的地址存入q的next元素里
q = p;再将p的地址覆盖在q上
}
p->next = NULL;//设置循环停止条件
p = head.next;
while (p != NULL)用while循环打印
{
printf("%d ", p->a);
p = p->next;
}
return 0;
}
2,将链表的第二位插入一个0;
#include<stdio.h>
struct node
{
int a;
node* next;
};
int main ()
{
node head,*p,*q;
int i,n;
q=&head;
for(i=1;i<=10;i++)
{
p=new node;
p->a=i;
q->next=p;
q=p;
}
p->next=NULL;
n=5;
p=&head;
for(i=0;i<n;i++) p=p->next;
q=new node;
q->a=0;
q->next=p->next;
p->next=q;
p=head.next;
while(p!=NULL)
{
printf("%d ",p->a);
q=p->next;
delete p;
p=q;
}
return 0;
}
小编是在DEV上写的,因为好像vs中new和delete要c++函数。
效果
3删除第二个元素
struct node
{
int a;
node* next;
};
int main ()
{
node head,*p,*q;
int i,n;
q=&head;
for(i=1;i<=10;i++)
{
p=new node;
p->a=i;
q->next=p;
q=p;
}
p->next=NULL;
n=2;
p=&head;
for(i=1;i<n;i++) p=p->next;
q=p->next;
p->next=q->next;
p=head.next;
delete q;
while(p!=NULL)
{
printf("%d ",p->a);
q=p->next;
delete p;
p=q;
}
return 0;
}
输出效果
扫描二维码关注公众号,回复:
14208437 查看本文章
