链表建立 插入 删除

#include "stdio.h"

typedef int ElemType;

typedef struct node{
ElemType data; /*数据域*/
struct node *next; /*指针域*/
}LNode,*LinkList;

LinkList GreatLinkList(int n){
LinkList p,r,list=NULL;
ElemType e;
int i;
for(i=1;i<=n;i++){
scanf("%d",&e);
p=(LinkList)malloc(sizeof(LNode));
p->data=e;
p->next=NULL;
if(!list)
list=p;
else
r->next=p;
r=p;
}
return list;
}

void insertList(LinkList *list,LinkList q,ElemType e){
LinkList p;
p=( LinkList)malloc(sizeof(LNode));
p->data=e;
if(!*list){
*list=p;
p->next=NULL;
}
else{
p->next=q->next;
q->next=p;
}
}

void delLink(LinkList *list ,LinkList q){
LinkList r;
if(q==list){
*list=q->next;
free(q);
}
else{
for(r=*list;r->next!=q;r=r->next);
if(r->next!=NULL){
r->next=q->next;
free(q);
}
}
}

void destroyLinkList(LinkList *list){
LinkList p,q;
p=*list;
while(p){
q=p->next;
free(p);
p=q;
}
*list=NULL;
}

main()
{
int e,i;
LinkList l,q;
q=l=GreatLinkList(1); /*创建一个链表结点,q和l指向该结点*/
scanf("%d",&e);
while(e) /*循环地输入数据,同时插入新生成的结点*/
{
insertList(&l,q,e) ;
q=q->next;
scanf("%d",&e);
}
q=l;
printf("The content of the linklist\n");
while(q) /*输出链表中的内容*/
{
printf("%d ",q->data);
q=q->next;
}
q=l;
printf("\nDelete the fifth element\n");
for(i=0;i<4;i++) /*将指针q指向链表第5个元素*/
{
q=q->next;
}
delLink(&l,q); /*删除q所指的结点*/
q=l;
while(q) /*打印出删除后的结果*/
{
printf("%d ",q->data);
q=q->next;
}
destroyLinkList(&l); /*释放掉该链表*/
getche();
}

 

转载于:https://www.cnblogs.com/April1314/p/3410206.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值