1. 程式人生 > >廣州海格2016年筆試題,關於連結串列的操作

廣州海格2016年筆試題,關於連結串列的操作

#include <stdio.h>
#include <malloc.h>
typedef struct node{
    int i;
    node *next;
}NODE; 
void insert(NODE *list,int x)
{
    NODE *u,*v,*p;
    u=list;
    v=u->next;
    while((2)(u->next!=NULL)&&x<v->i)/*遍歷 尋找插入點*/
    {
        u=v;
        v=v->next;
    }
    if
(v==NULL||(x>=v->i)(5)) { p=(NODE *)malloc(sizeof(NODE)); p->i=x; (3)p->next=v; (4)u->next=p; } } void delet(NODE *list,int x) { NODE *m,*n,*p; m=list; n=m->next; if(n->i==x) { m->next=n->next; free(n); }else
{ while(n!=NULL) { if(n->i==x){ m->next=n->next; free(n); n=n->next;/*找到該連結串列所有該刪除的資料*/ continue; } m=n; n=n->next; } } if(n==NULL) printf
("done!\n"); } void main() { int x; NODE *head,*p; head=(NODE *)malloc(sizeof(NODE)); head->next=NULL;(1printf("int = "); while(scanf("%d",&x)==1) insert(head,x); for(p=head->next;p!=NULL;p=p->next) printf("%d->",p->i); printf("\nend!\n"); delet(head,2); for(p=head->next;p!=NULL;p=p->next) printf("%d->",p->i); printf("\nend!"); }