C语言数据结构(链表)
文档供参考,可复制、编制,期待您的好评与关注! C语言数据结构(链表)1.把元素x插入表中并保持链表的有序性;2.查找值为x的元素,若找到将其删除;3.输出表中各元素的值。#include<stdio.h>#include<stdlib.h>typedef struct Node /结点类型定义int data;struct Node *next; Node, * LinkList;InitList(LinkList * L)* L=(LinkList)malloc(sizeof(Node);(* L)->next=NULL;void GreateTail(LinkList L) /尾插法Node *s, *r;int n,flag=1;r=L;while(flag)scanf("%d",&n);if(n!=0)s=(Node*)malloc(sizeof(Node);s->data=n;r->next=s;r=s;else flag=0;r->next=NULL;Node *Find_Del(LinkList L,int k) /在单链表L中查找数据为 k 的元素,找到后并删除Node *p ,*r=L;p=L->next;while(p!=NULL)if(p->data!=k) p=p->next;r=r->next;else break;if(p=NULL)printf("该有序数列中无此数据!n");printf("请重新输入数据:n");scanf("d",&k); /p=r->next; r->next=p->next;return p;free(p);void Insert(LinkList L,int e)LinkList p=L->next,q=L,s;if(p->next=NULL)printf("这是一个空表n");elsewhile(p&&(p->data<=e)q=p;p=p->next;if(p &&(p->data>=e)s=(LinkList)malloc(sizeof(Node);s->data=e;s->next=p;q->next=s;elses=(LinkList)malloc(sizeof(Node);s->data=e;s->next=NULL;q->next=s;void print(LinkList L)LinkList p=L->next;while(p)printf("%dn",p->data);p=p->next;void main()int k, e ;LinkList L;InitList(&L);while(1)printf("请输入一行有序数列,以零结束!n");/-赋值GreateTail(L); printf("该有序数列:n");print(L);printf("n");printf("请输入要插入的值:n"); scanf("%d",&e);Insert(L,e);printf("插入之后有序链表:n");/-插入print(L);printf("n");printf("输入你要删除的元素:n");/-查找并删除scanf("%d",&k);Find_Del(L,k);printf("删除k后的链表是:n");print(L);printf("n");4 / 4