問題 A 演算法2 8 2 11 鍊錶的基本操作

2021-09-12 22:33:02 字數 2519 閱讀 2380

輸入資料只有一組,第一行有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 1

21show

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 3

delete 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...