輸入資料只有一組,第一行有n+1個整數,第乙個整數是這行餘下的整數數目n,後面是n個整數。這一行整數是用來初始化列表的,並且輸入的順序與列表中的順序相反,也就是說如果列表中是1、2、3那麼輸入的順序是3、2、1。
第二行有乙個整數m,代表下面還有m行。每行有乙個字串,字串是「get」,「insert」,「delete」,「show」中的一種。如果是「get」或者「delete」,則其後跟著乙個整數a,代表獲得或者刪除第a個元素;如果是「insert」,則其後跟著兩個整數a和e,代表在第a個位置前面插入e;「show」之後沒有整數。
如果獲取成功,則輸出該元素;如果刪除成功則輸出「delete ok」;如果獲取失敗或者刪除失敗,則輸出「get fail」以及「delete fail」。如果插入成功則輸出「insert ok」,否則輸出「insert fail」。如果是「show」則輸出列表中的所有元素,如果列表是空的,則輸出「link list is empty」。注:所有的雙引號均不輸出。
3 3 2 121show
delete 1
show
delete 2
show
delete 1
show
delete 2
insert 2 5
show
insert 1 5
show
insert 1 7
show
insert 2 5
show
insert 3 6
show
insert 1 8
show
get 2
1 2 3delete ok
2 3delete ok
2delete ok
link list is empty
delete fail
insert fail
link list is empty
insert ok
5insert ok
7 5insert ok
7 5 5
insert ok
7 5 6 5
insert ok
8 7 5 6 5
7
1、因為輸入資料中含有大量的插入和刪除操作(不管你信不信,反正我信了),所以必須使用鍊錶,否則很可能會超時。這也是考查鍊錶的特性吧。
2、初始化鍊錶的元素是倒序的,這個使用題目中建立列表的方法(從頭部插入)就可以了。
總結:
這題考查的是鍊錶的特性。順序表中,怎樣判斷何時使用順序表何時使用鍊錶呢?就要看它們的特點了。順序表的特點是隨機訪問、隨機訪問,也就是說如果訪問和查詢比較頻繁的話使用順序表比較合適;鍊錶的特點是插入和刪除時不必移動其後的節點,如果插入和刪除操作比較頻繁的話使用鍊錶比較合適。
#include#include#include#include#includeusing namespace std;
typedef int elemtype;
typedef struct nodelnode,*linklist;
void creatlist(linklist &l,int n)
}int show(linklist &l )
printf("\n");
} return 1;
}int listget(linklist &l,int i,elemtype &e)
else
return 0;
} e = p->data;
return 1;
}int listdelete(linklist &l,int i)
else
} pre->next=p->next;
free(p);
return 1;
}int listinsert(linklist &l ,int i,elemtype e)
if(!p||j>i-1)
s=(linklist)malloc(sizeof(lnode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}int changestoi(string s)
return ans;
}int findinsertpos(string s)
return ans;
}int findinsertnum(string s)
for(j=j+1;jreturn ans;
}int main()
} else if(s.find("delete")!=string::npos)
else
} else if(s.find("insert")!=string::npos)
else
}else if(s.find("get")!=string::npos)
else
}} return 0;
}
鍊錶的基本演算法。
今天我們來學習一波有關鍊錶的基本演算法。pragma once include include include include 值型別 typedef int datatype typedef struct slistnode slistnode 初始化 void slistinit slistno...
演算法 環形鍊錶問題
141.環形鍊錶 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個...
鍊錶問題(演算法題)
1 從已排序的鍊錶中刪除重複的單元。如 輸入 1 1 2,輸出 1 2 如 輸入 1 1 2 2 3,輸出 1 2 3 思路 雙指標 快指標先往後移動,如果快指標的值不等於慢指標的值,就釋放掉中間的指標空間,並且將慢指標next指向快指標,把快指標賦值給快指標。node deleteduplicat...