PTA数据结构链表
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; }
进击的程序媛,共勉