单链表的基本操作

 1 #define int Status
 2 #define OK 1
 3 #define ERROR 0
 4 struct struct {  //此处为举例 
 5     char num[10];  //数据域 
 6     char name[10];//数据域 
 7     int score;//数据域 
 8 }ElemType;
 9 typedef struct Lnode{
10     ElemType data;//数据域 
11     struct Lnode *next;    //指针域 
12 }Lnode,*Linklist;
13 //初始化链表:构造一个空表 
14 int initList_L(Linklist L){
15     L=(Lintlist)malloc(sizeof(Lnode));
16     L->next=NULL;
17     return OK;
18 } 
19 //判断链表是否为空表
20 int ListEmpty(Linklist L){    //若L为空表,返回1;若非空返回0 
21     if(L->next)
22         return 0;
23     else
24         return 1;
25 }
26 //单链表的销毁
27 //从头指针开始,依次释放所有节点 
28 Status DestroyList_L(Linklist L){
29     Linklist p;
30     while(L!=NULL){
31         p=L;
32         L=L->next;
33         free(p);
34     }
35     return OK;
36 }
37 
38 //清空单链表
39 //链表任然存在,但链表中无元素,成为空链表(头指针和头结点任然存在)
40 //依次释放所有节点 ,并将头结点指针域设置为空
41 Status ClearList(Linklist L){
42     Linklist p,q;//或Lnode *p,*q; 
43     p=L->next;
44     while(p){    //没到表尾 
45         q=p->next;
46         free(p);
47         p=q;
48     }
49     L->next=NULL;//头结点指针域为空 
50     return OK;
51 }
52 //求单链表的表长
53 int ListLength_L(Linklist L){//返回L中数据元素的个数 
54     Linklist p; //Lnode *p; 
55     p=L->next;    //P指向第一个结点 
56     i=0;
57     while(p){    //遍历单链表,统计节点数 
58         i++;
59         p=p->next;
60     }
61     return i;
62 }
63 //取值--取单链表中的第I个元素的内容
64 Status GetElem_L(Linklist L,int i,ElemType &e){
65     //获取L中第i个元素的内容,通过变量e返回 
66     p=L->next;j=1;//初始化P指向首元结点 
67     while(p&&j<i){    //向后扫描,直到P指向第I个元素或p为空时 
68         p=p->next;++j;
69     }
70     if(!p||j>i) return ERROR;//第i个元素不存在 
71     e=p->data;    //取第i个元素 
72     return Ok;
73 }
74  

 

posted on 2018-10-02 01:39 QingFD 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/suqf/p/9736217.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值