首页 > 学院 > 开发设计 > 正文

数据结构上机练习(2) 单链表

2019-11-08 02:09:45
字体:
来源:转载
供稿:网友
#include "stdafx.h"#include "stdlib.h"#include "malloc.h"#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef char ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;void CreateList_L(LinkList &L,int n){ LinkList p; int i; L = (LinkList)malloc(sizeof(LNode)); L->next = NULL; for (i = n; i > 0;--i){ p = (LinkList)malloc(sizeof(LNode)); scanf_s("%d", &p->data); p->next = L->next; L->next = p; }}Status InsertList_L(LinkList L, int i, ElemType e){ LinkList p, s; int j = 0; p = L; while(p && j<i-1){ p = p->next; ++j; } if (!p || j>i - 1) return ERROR; s = (LinkList)malloc(sizeof(LNode)); s->data = e; s->next = p->next; p->next = s; return OK;}Status DeleteList_L(LinkList &L, int i, ElemType &e){ LinkList p, q; int j = 0; p = L; while(p->next && j<i-1){ p = p->next; ++j; } if (!(p->next) || j>i - 1) return ERROR; q = p->next; p->next = q->next; e = q->data; free(q); return OK;}Status GetElem_L(LinkList L, int i, ElemType &e){ LinkList p; int j = 1; p = L->next; while(p || j<i){ p = p->next; ++j; } if (!p || j>i) return ERROR; e = p->data; return OK;}void display(LinkList L) { LinkList p; p = L->next; while (p){ PRintf("%d", p->data); p = p->next; } printf("/n");}void MergeList_L(LinkList &La, LinkList &Lb, LinkList &Lc) { LinkList pa, pb, pc; pa = La->next; pb = Lb->next; Lc = pc = La; while(pa && pb) if(pa->data <= pb->data){ pc->next = pa; pc = pa; pa = pa->next; }else{ pc->next = pb; pc = pb; pb = pb->next; } pc->next = pa ? pa : pb; free(Lb);}int main() { LinkList L; CreateList_L(L, 3); display(L); InsertList_L(L, 2, 100); display(L); ElemType e; DeleteList_L(L, 2, e); display(L); printf("被删除的值=%d/n", e); GetElem_L(L, 3, e); printf("获取的值=%d/n", e); LinkList Lb,Lc; CreateList_L(Lb, 2); display(Lb); printf("合并后/n"); MergeList_L(L, Lb, Lc); display(Lc); getchar(); getchar(); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表