建立企业网站的形式,电脑端网站和手机网站区别,中国沈阳网app,嘉峪关建设局公告网站方法一#xff1a;
两次遍历链表。第一次遍历#xff0c;计算链表长度#xff0c;然后计算链表倒数第m个结点的正数位置k#xff0c;判断位置是否合法#xff0c;如果不合法#xff0c;输出NOT FOUND#xff0c;否则#xff0c;进行第二次遍历链表#xff0c;查找链表…
方法一
两次遍历链表。第一次遍历计算链表长度然后计算链表倒数第m个结点的正数位置k判断位置是否合法如果不合法输出NOT FOUND否则进行第二次遍历链表查找链表正数第k个位置的数据节点即为所求结点。
具体代码略。。。。
方法二
算法思想先搜索距离第一个数据节点m个位置的结点用指针pCur指向第m1个结点用pNode指向第1个结点。每次移动两个指针当pCur指针指向空结点时pNode指针指向倒数第m个结点即为所求结点。
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
#includestdlib.h
typedef int ElemType;
typedef struct LinkNode {ElemType data;LinkNode* next;
}LinkNode, * LinkList;
//尾插法建立单链表
void creatLinkList(LinkList L) {L (LinkNode*)malloc(sizeof(LinkNode));L-next NULL;LinkNode* pTail L;int num;while (scanf(%d, num) num ! -1) {LinkNode* pnode (LinkNode*)malloc(sizeof(LinkNode));pnode-data num;pnode-next pTail-next;pTail-next pnode;pTail pnode;}
}
//打印输出
void printLinkList(LinkList L) {LinkNode* pCur L-next;while (pCur ! NULL) {printf(%d , pCur-data);pCur pCur-next;}
}
//查找倒数第m个结点
bool search(LinkList L, int m,int num) {LinkNode* pCur L-next;int count 0;while (pCur ! NULL) {count 1;if (count m) {break;}pCur pCur-next;}if (pCur NULL) {return false;}else {pCur pCur-next;LinkNode* pnode L-next;num pnode-data;while (pCur ! NULL) {pnode pnode-next;num pnode-data;pCur pCur-next;}return true;}}
int main() {LinkList L;creatLinkList(L);int k;scanf(%d, k);int num;if (search(L, k, num)) {printf(倒数第%d个结点为%d\n, k, num);}else {printf(Not Found\n);}//printLinkList(L);return 0;
}