文档介绍:一、有序顺序表的插入操作 void insert(int A[],int n,int x) {/*插入子函数*/ int i,j; if(x>=A[n-1]) A[n ]=x; else { i=0 ; while(x>=A[i]) i++; for(j=n-1;j>=i;j--) A[j+1]=A[j]; A[i]=x; n++; }} 87631 A 0 1 2 3 4 5 6 7 8 9 i n=5 4 x 87631 A 0 1 2 3 4 5 6 7 8 9 i n=5 4 x i876431 A 0 1 2 3 4 5 6 7 8 9 n=6 4 x i 一、顺序表的插入操作 main() { int x,A[10],i,n; printf("\n input 5 num:"); for( i =0;i<5;i++) scanf("%d",&A[ i ]); n= i; printf("input insert num:"); scanf("%d",&x ); insert(A,n,x); for(i=0;i<6;i++) printf("%d ",A[i]); } A87631 A 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 i i n 4 x876431 A 0 1 2 3 4 5 6 7 8 9 n=6 i 二、单链表的操作#define NULL 0 typedef struct linknode { int data; struct linknode * next; }node; node * creat(head ) node * head; { node * currnode ,* newnode ; int x; head=(node *) malloc(sizeof(node )); currnode =head; next data head currnode do{ scanf("%d",&x ); newnode =(node *) malloc(sizeof(node )); newnode ->data=x; currnode ->next= newnode ; currnode = newnode ; }while(x!=NULL); head=head->next; currnode ->next=NULL; return head; }; head currnode x newnode currnode head 576130 head node * head; void print() { node * currnode ; currnode =head; printf ("链表如下:"); while(currnode ->data!=NULL) { printf("%d -->", currnode ->data); currnode = currnode ->next; }; printf("NULL\n "); printf ("链表长度为%d\n",length()); }; x 0 head currnode 576130 5-->7 --> 6 --> 1 --> 3 --> NULL 链表长度为 5 currnode currnode currnode void delete() { int x; node * delnode ,* currnode ; printf ("输入要删除数据: "); scanf("%d",&x ); if(head->data==NULL) printf (“此链表为空表无法删除! \n"); if( head->data==x ) { delnode =head; head=head->next; free(delnode ); if(head==NULL) printf ("此链表为空! "); } 576130 head X5 else { currnode =head; delnode = currnode ->next;