将数组的内容,用前插法建立一个带有头节点的单向链表。 #include "stdlib.h" #include "stdio.h" #define N 10 typedef struct list { int data; struct list *next; }NODE; NODE *creat_list(int *a,int n) { } print(NODE *h) //打印链表内容 { NODE *p; p=h->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } int main() { int i,j,a[N]={1,13,25,37,9,911,133,415,147,19}; NODE *head; head=creat_list(a,10); print(head); }
时间: 2024-01-15 20:02:29 浏览: 67
好的,我可以帮你回答这个问题。
以下是将数组的内容用前插法建立带头节点的单向链表的代码:
```c
NODE *creat_list(int *a,int n) {
NODE *head,*p,*q;
int i;
head=(NODE*)malloc(sizeof(NODE));
head->next=NULL; //头节点指针域为空
for(i=0;i<n;i++) {
p=(NODE*)malloc(sizeof(NODE));
p->data=a[i];
q=head; //从头节点开始查找插入位置
while(q->next!=NULL && q->next->data<p->data)
q=q->next;
p->next=q->next; //将p结点插入到链表中
q->next=p;
}
return head;
}
```
这个函数首先创建了一个带有头节点的链表,然后遍历整个数组,对于每个元素,按照从小到大的顺序将它插入到链表中。具体地,函数定义了三个指针变量:head、p、q。head指向链表的头节点,p用来创建新的节点,q则用来查找插入位置。在循环中,首先创建一个新的节点p,将数组元素赋值给它。然后从头节点开始查找插入位置,直到找到第一个大于等于p的节点,将p插入到该节点之前。最后返回头节点指针head。
你可以将这段代码加入你的程序中,然后运行main函数,调用creat_list和print函数就可以输出链表内容了。
阅读全文