題目描述
新年伊始,飛神得到了乙個叫做藥的鍊錶…(弱已詞窮…
初始時鍊錶只有頭指標,對鍊錶存在三種操作。
增加乙個元素,向鍊錶中增加乙個元素,增加後要保證鍊錶從前到後為單調不降序列。
刪除乙個元素,從鍊錶中刪除乙個元素,刪除後要保證剩餘節點仍為單調不降序列。
按序將鍊錶中的元素全部輸出。
輸入
多組輸入。
對於每組資料,第一行乙個整數n(1 <= n <= 1000),代表有n次操作。
接下來的n行,每行描述一次操作,形式如下。
a val。表明此時向鍊錶中新增乙個元素val(val不會超出int)。
d rank。表明此時要在鍊錶中刪除第rank個元素,若不存在,則忽略此次操作。
q。按序將鍊錶中的元素全部輸出,若煉表為空,則忽略此次操作。 輸出 對於每次第三種操作,按序將鍊錶中的元素全部輸出。 示例輸入
6a 1
a 2a 5
qd 3
q
示例輸出
1 2 5
1 2
提示
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define clr(a, b) memset(a, (b), sizeof(a))
#define inf 0x3f3f3f3f
#define eps 1e-8
typedef
long
long ll;
using
namespace
std;
typedef
struct node
node;
/*鍊錶增加函式*/
//如果鍊錶中沒有元素直接加到頭上
else
//如果頭元素比該元素大,把該元素作為頭元素
else
else
pr=pr->next;
}//查詢合適的位置新增該元素
if(flag==0)
//如果比每個元素都大就新增在末尾}}
return head;
}/*鍊錶的查詢函式*/
void show(node *head)
printf("%d\n",pr->date);
}/*鍊錶的刪除函式*/
node *delet(node *head,int b)
//若只有乙個元素刪掉就行了
else
node *p1=pr->next;
pr->next=p1->next;
free(p1);
}//鍊錶中如果有多個元素,移動到要刪除的元素前面的位置,讓next指向要刪元素的後乙個
return head;
}int main()
else
if(a[0]=='q'&&cnt)
else
if(a[0]=='d')}}
}return
0;}
鍊錶的增 刪 查 找
基本結構 typedef int datatype typedef struct slistnode slistnode 新建節點 和動態順序表不一樣,每次只開闢乙個節點的空間,將其節點的指標域賦為空 slistnode buyslistnode datatype x newnode data x ...
雙向鍊錶的增刪
雙向鍊錶在刪除節點時不需要找到要刪除節點的前乙個結點,這是比較好的,但是增刪都要同時處理前後兩個指標的問題,package singlelinkedlist 實現雙鏈表的增刪改查功能 public class twolinkedlistdemo 定義節點 class node override pu...
mysql增刪改查鍊錶 鍊錶的增刪改查
include include 先定義鍊錶裡面的元素。typedef struct nodemynode 定義整個鍊錶。typedef struct linkmylink int isempty to mylink mylink mylink 判斷鍊錶是否為空。int push to mylinki...