回顾数据结构(1):单链表
2016-11-04 19:07
375 查看
1.链表的结点由数据域和指针域构成:
2.创建链表:
3.获取链表中某一项
4.链表的遍历
5.链表的插入
6.链表的删除
全部代码:
//定义链表结构 typedef struct LNode{ ElemType data; struct LNode *next; }Node,*LinkList;
2.创建链表:
//创建链表 Status CreateLinkList(LinkList &L,int n){ LinkList p,head; L = (LinkList)malloc(sizeof(Node)); if(!L) return ERROR; L->next = NULL; head = L; printf("input data:\n"); for(int i = 0;i<n;i++){ p = (LinkList)malloc(sizeof(Node)); if(!p) return ERROR; scanf("%d",&p->data); p->next = NULL; head->next = p; head = p; } return OK; }
3.获取链表中某一项
//获取元素 Status GetItem(LinkList L ,int i,ElemType &e){ LinkList head ; head = L->next; int j = 0; while(head &&j<i-1){ head = head ->next; ++j; } if(!head ||j>i-1){ return ERROR; } e = head->data; return OK; }
4.链表的遍历
//遍历链表 Status ReadLinkList(LinkList L){ printf("output data:\n"); LinkList p; p = L->next; if(!p) { printf("error"); return ERROR; } while(p!= NULL){ printf("%d ",p->data); p = p->next; } return OK; }
5.链表的插入
Status InertItem(LinkList L,int i,ElemType e){ LinkList head,temp; int j=0; head = L; while(head&&j<i-1){ head = head->next; ++j; } if(!head&&j>i-1) return ERROR; temp = (LinkList)malloc(sizeof(Node)); if(!temp) return ERROR; temp->data = e; temp->next = head->next; head->next = temp; return OK; }
6.链表的删除
Status deleteLinkList(LinkList L,int i){ LinkList head,temp; head = L; int j=0; while(head->next&&j<i-1){ head = head->next; ++j; } if(!head->next||j>i-1) return ERROR; temp = head->next; head->next = temp->next; printf("delete item is: %d",temp->data); free(temp); return OK; }
全部代码:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define OK 1;
#define ERROR 0;
typedef int Status;
typedef int ElemType;
//定义链表结构 typedef struct LNode{ ElemType data; struct LNode *next; }Node,*LinkList;
//创建链表 Status CreateLinkList(LinkList &L,int n){ LinkList p,head; L = (LinkList)malloc(sizeof(Node)); if(!L) return ERROR; L->next = NULL; head = L; printf("input data:\n"); for(int i = 0;i<n;i++){ p = (LinkList)malloc(sizeof(Node)); if(!p) return ERROR; scanf("%d",&p->data); p->next = NULL; head->next = p; head = p; } return OK; }
//遍历链表 Status ReadLinkList(LinkList L){ printf("output data:\n"); LinkList p; p = L->next; if(!p) { printf("error"); return ERROR; } while(p!= NULL){ printf("%d ",p->data); p = p->next; } return OK; }
//获取元素 Status GetItem(LinkList L ,int i,ElemType &e){ LinkList head ; head = L->next; int j = 0; while(head &&j<i-1){ head = head ->next; ++j; } if(!head ||j>i-1){ return ERROR; } e = head->data; return OK; }
Status InertItem(LinkList L,int i,ElemType e){ LinkList head,temp; int j=0; head = L; while(head&&j<i-1){ head = head->next; ++j; } if(!head&&j>i-1) return ERROR; temp = (LinkList)malloc(sizeof(Node)); if(!temp) return ERROR; temp->data = e; temp->next = head->next; head->next = temp; return OK; }
Status deleteLinkList(LinkList L,int i){ LinkList head,temp; head = L; int j=0; while(head->next&&j<i-1){ head = head->next; ++j; } if(!head->next||j>i-1) return ERROR; temp = head->next; head->next = temp->next; printf("delete item is: %d",temp->data); free(temp); return OK; }
int main()
{
LinkList L;
L = NULL;
int num;
printf("input the length of LinkList:\n");
scanf("%d",&num);
CreateLinkList(L,num);
ReadLinkList(L);
ElemType e;
printf("\ninput the item index:\n");
scanf("%d",&num);
GetItem(L,num,e);
printf("%d",e);
printf("\ninput the insert item and it's index:\n");
int index;
scanf("%d",&e);
scanf("%d",&index);
InertItem(L,index,e);
printf("\nafter insert action linkList\n");
ReadLinkList(L);
printf("\nafter delete index \n");
scanf("%d",&index);
deleteLinkList(L,index);
printf("\nafter delete action linkList\n");
ReadLinkList(L);
}
相关文章推荐
- 【课堂回顾】数据结构之单链表
- 成人版java数据结构之单链表I建立和遍历
- java数据结构之单链表
- 数据结构之单链表
- 回顾大学--大二数据结构实验--实验一 递归练习
- 回顾大学--大二数据结构实验--前言
- 数据结构-单链表的实现
- 回顾大学--大二数据结构实验--实验二 排序算法
- 数据结构之单链表C语言实现
- 数据结构——寻找单链表倒数第n个结点
- 数据结构——判断单链表是否有环
- 回顾asp二进制流瓶颈,是否可以引进新数据结构
- 数据结构——单链表的基本操作
- 数据结构之单链表
- 常用数据结构1——单链表(单链表的创建、)
- 成人版java数据结构之单链表II删除
- 数据结构之单链表 C++ 实现
- 数据结构——单链表
- 数据结构(殷人琨版)学习笔记之单链表
- 数据结构基础系列——单链表的实现