#include<stdio.h>
#include<stdlib.h>
typedef struct _node{//创建链表结点
int value;
struct _node*next;
}Node;
typedef struct _list{//存储头、尾结点
Node *head;
Node *tail;
}List;
void add (List *pList,int number);//添加元素
void delete(List *pList,int number);//删除链表指定项
void destry(List *pList);//清空链表
int main(){
List list;//创建一个链表
list.head=list.tail=NULL;//初始化
int number;
do{
scanf("%d",&number);
add(&list,number);
}while(number!=-1);//向链表中读入数值
Node*p;
//链表的遍历
// for(p=list.head;p;p=p->next){
// printf("%d",p->value);
// }
return 0;
}
//添加数字进去
void add (List *pList,int number){
Node *p=(Node*)malloc(sizeof(Node));//创建节点p
p->value=number;//读入数值
p->next=NULL;//指针初始化
if(pList->tail)//链表不为空
pList->tail=pList->tail->next=p;//往尾部写入数据同时更新尾部
else pList->head=pList->tail=p;//若链表为空
}
void delete(List *pList,int number){
Node *q;//用于遍历
Node *p;//中间指针
for(q=NULL,p=pList->head;p;q=p,p=p->next){
if(p->value==number){//用循环查找值为number的一项
if(q){//考虑->左边指针不能为空!
q->next=p->next;//核心的一部
}
else pList->head=p->next;//若q为空,即指向头结点,则需删除
free(p);
break;
}
}
}
void destry(List *pList){//删除全部链表
Node*p,*q;
for(p=pList->head;p;p=q){
q=p->next;
free(p);
}
}
链表初学(c代码实现)
最新推荐文章于 2024-09-10 20:37:53 发布