数据结构线性表练习题之四

    xiaoxiao2023-10-25  160

    删除有序单链表中值大于x而不大于y的结点

    代码实现

    #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define FLAG -1 //停止输入的标志 typedef struct Node { int data; struct Node * next; }LNode,*LinkList; void CreateLinkList(LinkList L); void show_List(LinkList L); void DelLink(LinkList L,int x,int y);//前提是单链表有序! void main() { LinkList L; L = (LinkList)malloc(sizeof(LNode));//创建头结点 printf("创建单链表:\n"); CreateLinkList(L);//假设单链表从1-8 printf("遍历单链表:\n"); show_List(L); printf("删除指定区间后的单链表:\n"); DelLink(L,4,7); show_List(L); } void CreateLinkList(LinkList L) //尾插法 输出是输入的正序 { LinkList s,r; int x; scanf("%d",&x); r = L; while(x != FLAG) { s = (LNode *)malloc(sizeof(LNode)); s->data = x; r->next = s; r = s; scanf("%d",&x); } r->next = NULL; } void show_List(LinkList L) { LinkList p = L->next; printf("%d",p->data); p = p ->next; while(p != NULL) { printf("->%d",p->data); p = p->next; } printf("\n"); } void DelLink(LinkList L,int x,int y) { LinkList p,q,s; p = L->next; while((p != NULL) && (p->data <= x)) { q = p; p = p->next; } while((p != NULL) && (p->data <= y)) { s = p; p = p->next; //删除结点 //q->next = p; free(s); } q->next = p; // }
    最新回复(0)