連結串列的建立和插入
阿新 • • 發佈:2019-02-05
#include <stdio.h> #include <stdlib.h> typedef struct NODE { int data; struct NODE *next; }Node; Node * create_linklist(int n) { Node *head=NULL,*p,*last; int d; int i; for(i=0;i<n;i++) { scanf("%d",&d); p=(Node *)malloc(sizeof(Node)); p->data=d; p->next=NULL; if(head==NULL) head=p; else last->next=p; last=p; } return head; } Node *insert_node(Node *head,int b) { Node * pre1=head,*pre2,*p; p=(Node*)malloc(sizeof(Node)); p->data=b; if(head==NULL) { head=p; p->next=NULL; } else if(p->data<head->data) { head=p; p->next=pre1; } else { while(pre1!=NULL&&p->data>=pre1->data) { pre2=pre1; pre1=pre1->next; } p->next=pre2->next; pre2->next=p; } return head; } void print(Node * head) { Node *p; p=head; while(p!=NULL) { printf("%-5d",p->data); p=p->next; } printf("\n"); return; } int main() { Node *head; head=create_linklist(6); int b=90,i; head=insert_node(head,b); print(head); return 0; }