Untitled
unknown
c_cpp
2 years ago
2.5 kB
11
Indexable
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node{
long long val;
struct node *nxt;
};
typedef struct node unit;
char str[109];
signed main(){
unit *head=(unit*)malloc(sizeof(unit)),*tail=(unit*)malloc(sizeof(unit));
int exist=0;
while(scanf(" %s",str)!=EOF){
if(str[0]=='p'){ //印出陣列
if(exist==0) //陣列不存在
printf("\n");
else{ //存在就照順序列印
unit *pos=head;
while(pos!=NULL){
printf("%lld ",pos->val);
pos=pos->nxt;
}
printf("\n");
}
}
if(str[0]=='a'){ //在結尾插入
unit *cur=(unit*)malloc(sizeof(unit));
scanf(" %lld",&(cur->val));
cur->nxt=NULL;
if(exist==0){
head=cur;
tail=head;
}
else{
tail->nxt=cur;
tail=cur;
}
printf("APPEND_SUCC\n");
exist=1;
}
if(str[0]=='s'){
long long x;
scanf(" %lld",&x);
int fail=1;
unit *pos=head;
while(pos!=NULL){ //遍歷linked list
unit *tem=pos;
if(tem->val==x){
fail=0; //找到符合的數字
}
pos=pos->nxt; //指標指向下一個
}
if(fail) //沒找到target
printf("SEARCH_FAIL\n");
else //找到target
printf("SEARCH_SUCC\n");
}
if(str[0]=='u'){ //更新
long long x,y;
scanf(" %lld %lld",&x,&y);
int fail=1;
unit *pos=head;
while(pos!=NULL){ //遍歷linked list
if(pos->val==x){ //找到target
pos->val=y; //更新數字
fail=0; //設為0表示成功
}
pos=pos->nxt;
}
if(fail) //更新失敗
printf("UPDATE_FAIL\n");
else //更新成功
printf("UPDATE_SUCC\n");
}
}
unit *pos=head;
while(pos!=NULL){
unit *tem=pos;
pos=pos->nxt;
free(tem);//清空linked list元素
}
}Editor is loading...
Leave a Comment