数据结构链表的简单处理

    xiaoxiao2021-03-28  32

    数据结构链表的简单处理 代码: #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 //单链表类型定义 typedef struct node { int data; struct node *next; }LNode, *LinkList; //单链表的创建 (尾插法) LinkList Creat_LinkList( ) { LNode *s,*r;int x; LinkList H = (LinkList) malloc(sizeof(LNode)); H->next = NULL;r=H; scanf("%d",&x); while(x!=-1) { s = (LinkList) malloc(sizeof(LNode)); s->data=x; s->next = r->next; r->next = s; r=s; scanf("%d",&x); }return H; } //按序号查找 LinkList Get_LinkList(LinkList H,int k) { LNode *p; int j=1; p=H->next; while(p->next!=NULL && j<k) { p=p->next; j++; } if(j==k)return p; else return NULL; } //单链表的插入 int Insert_LinkList(LinkList H, int i, int x) { //插入代码; LinkList p, q, s; q = Get_LinkList(H,i-1); if(q == NULL) { printf("第%d个节点不存在", i - 1); return ERROR; } else { if(q->next == NULL) { printf("第%d个节点不存在", i); return ERROR; } else { s= (LinkList) malloc (sizeof(LNode)); s->data = x; p = q->next; q->next = s; s->next = p; return OK; } } } //单链表的删除 int Del_LinkList(LinkList H,int i) { //删除代码; LinkList p, q; q = Get_LinkList(H,i-1); if(q == NULL) { printf("第%d个节点不存在", i - 1); return ERROR; } else { if(q->next == NULL) { printf("第%d个节点不存在", i); return ERROR; } else { p = q->next; q->next = p->next; free(p); return OK; } } } //单链表的输出 void Print_LinkList(LinkList H) { LNode *p; p=H->next; while(p!=NULL) { printf("%d->",p->data); p=p->next; } printf("end\n"); } main() { LinkList H,p; int i,num,x; H=Creat_LinkList( ); Print_LinkList(H); printf("请输入要插入的序号:\n"); scanf("%d",&num); printf("请输入要插入的值:\n"); scanf("%d",&x); if(Insert_LinkList(H,num,x)==OK) { printf("插入成功!\n");Print_LinkList(H);} else printf("插入失败!\n"); //调用删除代码; printf("请输入要删除的序号:\n"); scanf("%d", &num); if(Del_LinkList(H,num)==OK) { printf("删除成功!\n"); Print_LinkList(H); } else printf("删除失败!\n"); }
    转载请注明原文地址: https://ju.6miu.com/read-664639.html

    最新回复(0)