题解 | 链表
【模板】链表
http://www.nowcoder.com/practice/97dc1ac2311046618fd19960041e3c6f
- #include
- using namespace std;
- typedef struct list{
-
int data; -
list *next; - }list;
- list *Init_list(list *L)//链表初始化
- {
-
L=(list*) malloc(sizeof(list)); -
L->next=NULL; -
return L; - }
- list* insert_list(list* L,int x,int y)//插入功能
- {
-
list *p=(list*)malloc(sizeof(list)),*q=L->next,*j=L; -
while(q) -
{ -
if(q->data==x) -
{ -
p->data=y; -
p->next=j->next; -
j->next=p; -
return L; -
} -
j=q; -
q=q->next; -
} -
j->next=(list*)malloc(sizeof(list)); -
j=j->next; -
j->data=y; -
j->next=NULL; -
return L; - }
- list *delete_list(list *L,int x)
- {
-
list *p=L->next,*q=L; -
while(p) -
{ -
if(p->data==x) {q->next=p->next;free(p);return L;} -
q=p; -
p=p->next; -
} -
return L; - }
- void clear_visit_list(list *L)//清除和输出
- {
-
list *p=L->next; -
free(L); -
while(p) -
{ -
cout<<p->data<<" "; -
L=p; -
p=p->next; -
free(L); -
} - }
- int length_list(list *L)
- {
-
list *q=L->next; -
int j=0; -
while(q) -
{ -
q=q->next; -
j++; -
} -
return j; - }
- int main()
- {
-
list *L=Init_list(L); -
int x,y,n; -
cin>>n; -
string choose; -
while(n--) -
{ -
cin>>choose; -
if(choose=="insert") -
{ -
cin>>x>>y; -
L=insert_list(L,x,y); -
} -
else if(choose=="delete") -
{ -
cin>>x; -
L=delete_list(L,x); -
} -
} -
if(length_list(L)>0)clear_visit_list(L); -
else cout<<"NULL"; -
return 0; - }
360集团公司福利 431人发布