建立一个带头结点的单向链表,链表中的各结点按结点数据中的数据递增有序链接,函数fun的功能是:把形参x的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序
Posted jun俊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建立一个带头结点的单向链表,链表中的各结点按结点数据中的数据递增有序链接,函数fun的功能是:把形参x的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序相关的知识,希望对你有一定的参考价值。
#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的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序的主要内容,如果未能解决你的问题,请参考以下文章