//(链表)先建立有序(从小到大)带有头节点的单向链表,再删除一个节点,并将链表输出。 #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) { } delNode(NODE *head,int x) { } 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,x,a[N]={1,13,25,37,9,911,133,415,147,19}; NODE *head; head=creat_list(a,10); scanf("%d",&x); delNode(head,x); print(head); }
时间: 2024-03-14 22:48:32 浏览: 63
好的,以下是代码实现。
```
#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)
{
NODE *head,*p,*q;
int i;
head=(NODE*)malloc(sizeof(NODE));
head->data=0;
head->next=NULL;
q=head;
for(i=0;i<n;i++)
{
p=(NODE*)malloc(sizeof(NODE));
p->data=a[i];
p->next=NULL;
q->next=p;
q=p;
}
return head;
}
void delNode(NODE *head,int x)
{
NODE *p,*q;
p=head->next;
q=head;
while(p!=NULL && p->data<x)
{
q=p;
p=p->next;
}
if(p==NULL || p->data>x)
{
printf("Not found %d\n",x);
return;
}
q->next=p->next;
free(p);
}
void 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,x,a[N]={1,13,25,37,9,911,133,415,147,19};
NODE *head;
head=creat_list(a,10);
printf("please input the node you want to delete:");
scanf("%d",&x);
delNode(head,x);
print(head);
return 0;
}
```
在这个程序中,我们首先定义了一个结构体NODE,并且定义了两个函数creat_list和delNode。
creat_list函数用于创建一个有序的链表,它接受一个整型数组a和数组长度n作为参数,返回一个链表的头结点。
delNode函数用于删除链表中的某个节点,它接受一个链表的头结点和一个整数x作为参数,如果链表中存在值为x的节点,则删除该节点,否则输出Not found。
最后,在主函数中,我们调用了creat_list函数创建了一个有序链表,然后调用了delNode函数删除了链表中的某个节点,并且调用了print函数打印出了链表内容。
阅读全文