廣州海格2016年筆試題,關於連結串列的操作
阿新 • • 發佈:2019-02-20
#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;(1)
printf("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!");
}