码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构:2.4 线性表链式存储及操作集

时间:2021-02-06 11:58:08      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:printf   span   print   return   数据结构   修改表   next   div   跳过   

最简单的链表

 1 typedef struct LNode *List;
 2 struct LNode {
 3     ElementType Data;
 4     List Next;
 5 };
 6 struct LNode L;
 7 List PtrL;
 8 
 9 //建立
10 
11 //求表长
12 int Length ( List PtrL ) {
13     List p = PtrL;  //p 指向表的第一个节点
14     int j = 0;
15     while(p) {
16         p = p->Next; 
17         j++;
18     }
19     return j;
20 }
21 
22 //① 按序号查找
23 List FindKth( int K, List PtrL ) {
24     List p = PtrL;
25     int i = 1;
26     while(p!=NULL && i<K) {
27         p = p->Next;
28         i++;
29     }
30     if(i == K) return p;
31     else return NULL;
32 }
33 
34 //② 按值查找
35 List Find( ElementType X, List PtrL ) {
36     List p = PtrL;
37     while(p!=NULL && p->Data != X)
38         p = p->Next;
39     return p;
40 }
41 
42 //插入
43 List Insert( ElementType X, int i, List PtrL ) {
44     List p,s;
45     if( i==1 ) {       // 新节点插入在表头
46         s = (List)malloc(sizeof(struct LNode));
47         s->Data = X;
48         s->Next = PtrL;
49         return s;
50     }
51     p = FindKth(i-1, PtrL); // 查找第i-1个节点
52     if(p == NULL) {
53         printf("参数i错误");
54         return NULL;
55     }
56     else {
57         s = (List)malloc(sizeof(struct LNode));
58         s->Data = X;
59         s->Next = p->Next;
60         p->Next = s;
61         return PtrL;
62     }
63     
64 }
65 
66 //删除
67 List Delete( int i, List PtrL ) {
68     List p,s;
69     if( i==1 ) {       //删除的是表头节点
70         s = PtrL;
71         if(PtrL!=NULL) PtrL = PtrL->Next; //修改表头指针
72         else return NULL;
73         free(s);
74         return PtrL;
75     }
76     p = FindKth( i-1, PtrL);
77     if( p==NULL ) {
78         printf("第%d个结点不存在",i-1); return NULL;
79     }
80     else if ( p->Next == NULL ) {
81         printf("第%d个结点不存在",i); return NULL;
82     }
83     else {
84         s = p->Next;
85         p->Next = s->Next;  //跳过第i个结点
86         free(s);         //删除第i个结点
87         return PtrL;
88     }
89 }

 

数据结构:2.4 线性表链式存储及操作集

标签:printf   span   print   return   数据结构   修改表   next   div   跳过   

原文地址:https://www.cnblogs.com/Pio-GD/p/14379388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!