int countcs(struct ListNode* head)
{
int sum = 0;
for (struct ListNode* tem = head; tem != NULL; tem = tem->next)
{
if(tem->code[1]=='0'&&tem->code[2]=='2')
{
sum++;
}
}
return sum;
}
知识兔Position Find(List L, ElementType X)
{
List q = L; //设置新的节点指针保存传入指针,避免误操作
while (q) //循环遍历链表
{
if (q->Data == X) return q;
q = q->Next;
}
return ERROR; //直接在循环体外加上return,没有满足条件的,才会执行到这一步
}
知识兔List Insert(List L, ElementType X, Position P)
{
List q = (List)malloc(sizeof(struct LNode)); //C语言,申请新的节点空间
q->Data = X; //赋值
q->Next = NULL; //初始化指针域
if (L == P) // 如果把新节点插到链表头部
{
q->Next = L; return q;
}
List tmp = L;
while (tmp) //循环遍历找P前的节点位置
{
if (tmp->Next == P) //找到后,插入
{
q->Next = P;
tmp->Next = q;
return L;
}
tmp = tmp->Next; //节点后移
}
printf("Wrong Position for Insertion\n");
return ERROR;
}
知识兔List Delete(List L, Position P)
{
if (L == P) //如果要删除的节点为链表首节点
{
L = L->Next;
return L;
}
Position q = L;
while (q) //循环遍历寻找P前结点位置
{
if (q->Next == P)
{
q->Next = P->Next;
free(P); //free释放空间
return L;
}
}
printf("Wrong Position for Deletion\n");
return ERROR;
}
知识兔调用到insert()函数的只有插入到表和插入到链表尾的位置.
插入到表头的insert()会在if(L==P){}时判断为true,执行“建立一个新节点”,”把旧的链表挂到新节点之后“,“返回以新的节点为表头的链表”
插入到链表尾的insert()则会执行剩余的代码块,把新节点挂到旧链表的空结点之前
此题与上题稍有不同,大体一致。
List MakeEmpty()
{
List head = (List)malloc(sizeof(struct LNode)); //申请节点空间
head->Next = NULL; //初始化指针域
return head; //返回头节点
}
知识兔
Position Find(List L, ElementType X)
{
L = L->Next; //先移到有效节点
while(L!=NULL) //while循环好
{
if(L->Data==X)
{ //找到位置返回
return L;
}
L = L->Next;
} return ERROR;
}
知识兔
bool Insert(List L, ElementType X, Position P)
{
List q = (List)malloc(sizeof(struct LNode)); //创建新节点
q->Data = X;
q->Next = P; //赋值X,下一个为P位置
while(L!=NULL) //while循环遍历,判断是否到链表尾
{
if(L->Next==P)
{ //找到位置的前一个
L->Next = q; //L的下一个指向新节点
return true;
}
L = L->Next;
}
printf("Wrong Position for Insertion\n"); //找不到,才会执行到此。注意格式"\n"
return false;
}
知识兔bool Delete(List L, Position P)
{
while (L != NULL) //前提,链表不空或未到链表尾,while大法好
{
if (L->Next == P)
{
L->Next = P->Next; //直接让L的下一个指向删除位置节点下一个
return true;
}
L = L->Next;
}
printf("Wrong Position for Deletion\n");
return false;
}
知识兔进击的程序媛,共勉