Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)
生活随笔
收集整理的這篇文章主要介紹了
Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
3-05. 求鏈式線性表的倒數第K項(15)
時間限制 250 ms 內存限制 65536 kB 代碼長度限制 8000 B 判題程序 Standard給定一系列正整數,請設計一個盡可能高效的算法,查找倒數第K個位置上的數字。
輸入格式說明:
輸入首先給出一個正整數K,隨后是若干正整數,最后以一個負整數表示結尾(該負數不算在序列內,不要處理)。
輸出格式說明:
輸出倒數第K個位置上的數據。如果這個位置不存在,輸出錯誤信息“NULL”。
樣例輸入與輸出:
| 序號 | 輸入 | 輸出 |
| 1 | 4 1 2 3 4 5 6 7 8 9 0 -1 | 7 |
| 2 | 6 3 6 7 8 2 -2 | NULL |
提交代碼
?
注:創建一個只有頭結點的鏈表;head->Next=NULL;然后使用頭插法,負數就不輸入,遍歷的時候直接從頭結點開始,取第N個數即可。如果N>head->length,輸出“NULL”。
?
#include<stdio.h> #include<stdlib.h> #include <malloc.h> typedef struct Node {int dex;int length;struct Node * Next; }node,*Link;//創建空鏈表 node * create(node *head) {head=(node *)malloc(sizeof(node));head->Next=NULL;return head; } //頭插法 void insert(node *head) {struct Node *tail;tail=head;head->length=0;int dex;while(scanf("%d",&dex)){if(dex<0)break;tail=(node *)malloc(sizeof(node));tail->dex=dex;tail->Next=head->Next;head->Next=tail;head->length++;} } //找第N個數 void find(node *head,int N) {if(N>head->length)printf("NULL\n");else{int i=1;node* pthis;pthis=head->Next;while(pthis!=NULL){if(i==N){printf("%d\n",pthis->dex);break;}i++;pthis=pthis->Next;} } } //刪除鏈表 void delLink(node *head) {struct Node *pthis;pthis=head;while(pthis!=NULL){free(pthis);head=head->Next;pthis=head;} }int main() {int N;scanf("%d",&N);struct Node *head;head=create(head);insert(head);find(head,N);delLink(head);return 0; } View Code?
轉載于:https://www.cnblogs.com/a842297171/p/4749769.html
總結
以上是生活随笔為你收集整理的Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Css3系列-新属性新布局
- 下一篇: CString + UINT Error