建立一個帶頭結點的單向鏈表,鏈表中的各結點按結點數據中的數據遞增有序鏈接,函數fun的功能是:把形參x的值放入一個新結點並插入鏈表中,使插入後各結點數據域中的數據仍保持遞增有序
阿新 • • 發佈:2017-09-19
print lis void clu ret div clas head number
#include <stdio.h> #include <stdlib.h> #define N 8 typedef struct list { int data; struct list *next; } SLIST; void fun( SLIST *h, int x) { SLIST *p, *q, *s; s=(SLIST *)malloc(sizeof(SLIST)); /**********found**********/ s->data=x;將形參x賦給結點的數據域 q=h; p=h->next; while(p!=NULL && x>p->data) { /**********found**********/ q=p; p=p->next; } s->next=p; /**********found**********/ q->next=s; } SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i<N; i++) { q=(SLIST *)malloc(sizeof(SLIST)); q->data=a[i]; p->next=q; p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("\nThe list is NULL!\n"); else { printf("\nHead"); do { printf("->%d",p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } main() { SLIST *head; int x; int a[N]={11,12,15,18,19,22,25,29}; head=creatlist(a); printf("\nThe list before inserting:\n"); outlist(head); printf("\nEnter a number : "); scanf("%d",&x); fun(head,x); printf("\nThe list after inserting:\n"); outlist(head); }
建立一個帶頭結點的單向鏈表,鏈表中的各結點按結點數據中的數據遞增有序鏈接,函數fun的功能是:把形參x的值放入一個新結點並插入鏈表中,使插入後各結點數據域中的數據仍保持遞增有序