单链表的创建(头插法尾插法),插入,删除
来源:互联网 发布:马士兵大数据视频 编辑:程序博客网 时间:2024/06/05 15:01
<span style="font-size:18px;">#include <iostream>#include <cstdio>#include <stdlib.h>using namespace std;typedef int ElemType;typedef struct Node{ ElemType data; struct Node *next;}Node,*LinkedList;//把struct Node *定义为新类型LinkList,是一个结构体的指针。void InitLinkedList(){ Node *L; L=(Node *)malloc(sizeof(Node)); if(L==NULL) printf("申请空间失败"); L->next = NULL;}LinkedList CreateLinkedListHead(int n)//头插法{ int i; int x; Node *L; L=(Node *)malloc(sizeof(Node)); L->next = NULL; printf("输入元素:"); for(i=0;i<n;i++) { Node *p; p=(Node *)malloc(sizeof(Node)); scanf("%d",&x); p->data = x; p->next = L->next; L->next = p; } return L;}LinkedList CreateLinkedListTail(int n)//尾插法{ int x; Node *L; L=(Node *)malloc(sizeof(Node)); L->next = NULL; Node *r; r=L; printf("输入元素:"); while(n--) { scanf("%d",&x); Node *p; p=(Node *)malloc(sizeof(Node)); p->data = x; r->next = p; r=p; } r->next = NULL; return L;}void InsertLinkedList(LinkedList L,int i,ElemType x)//插入元素{ LinkedList p; p=L; int j; j=1; while(j<i) { p=p->next; j++; } Node *s; s=(Node *)malloc(sizeof(Node)); s->data = x; s->next = p->next; p->next = s;}void output(LinkedList L){ Node *p; for(p=L->next;p!=NULL;p=p->next) { printf("%d",p->data); }}void deleteLinkedList(LinkedList L,int i)//删除i位置上的元素{ int j; LinkedList p,q; p=L; j=1; while(j<i) { p=p->next; j++; } q=p->next; p->next = p->next->next; free(q);}int GetElem(LinkedList L,int i)//获取元素{ ElemType e; int j; LinkedList p; p=L->next; j=1; while(p && j<i) { p=p->next; j++; } if(!p || j>i) printf("第%d个节点不存在\n",i); e=p->data; return e;}void ClearList(LinkedList L){ LinkedList p,q; p=L->next; while(p) { q=p->next; free(p); p=q; } L->next=NULL;}int main(){ int n; int i; int x; LinkedList H; printf("输入单链表的长度(头插法):"); scanf("%d",&n); H=CreateLinkedListHead(n); output(H); printf("\n"); printf("输入单链表的长度(尾插法):"); scanf("%d",&n); H=CreateLinkedListTail(n); output(H); printf("\n"); printf("输入要获取哪一位置的元素:"); scanf("%d",&i); printf("%d\n",GetElem(H,i)); printf("输入要插入的元素e与位置i:"); scanf("%d %d",&x,&i); InsertLinkedList(H,i,x); output(H); printf("\n"); printf("输入要删除哪一位置上的元素:"); scanf("%d",&i); deleteLinkedList(H,i); output(H); printf("\n是否要整表删除1/0?\n"); scanf("%d",&x); if(x==1) { ClearList(H); printf("单链表为:"); output(H); }else { printf("单链表仍为:"); output(H); } return 0;}</span>
<span style="font-size:18px;">顺序存储结构与单链表结构的区别:</span>
<span style="font-size:18px;">顺序存储结构是用一段连续的存储单元存储的,而单链表是用离散的存储单元存储的。</span>
<span style="font-size:18px;">顺序存储结构适用于频繁的进行查找操作,而很少进行插入删除操作。</span>
<span style="font-size:18px;">当要频繁的进行插入删除操作时,就要选取单链表结构。</span>
<span style="font-size:18px;">顺序存取结构需要预先申请空间。而单链表不需要,元素个数也不受限制。</span>
0 0
- 单链表的创建(头插法尾插法),插入,删除
- 单链表的创建,删除,插入
- 单链表的创建、插入、删除
- 单链表创建,插入,删除
- 单链表创建,插入,删除
- C++单链表的操作(创建,删除,打印,遍历,插入)
- C单链表的操作(创建、插入、删除)
- 数据结构:单链表(一)的创建、插入、删除、遍历,打印
- 单链表的基本操作(创建、插入、删除......)
- 单链表的创建、插入、删除、倒置操作
- 单链表的创建、插入、删除、倒置操作
- 单链表的创建,删除,插入,显示,排序
- 数据结构 单链表的创建 插入 删除
- 单链表的创建, 删除, 插入, 输出
- 单链表的创建、插入、删除等操作
- 单链表的创建插入与删除
- 单链表的创建,删除,插入,排序
- 单链表的创建+ 求表长+ 查找+插入+删除
- POJ 2478-Farey Sequence(欧拉函数)
- 清醒吧拭心!自满的程序员是最菜的!
- Volley 自定义XMLRequest和GSONRequest
- 234. Palindrome Linked List
- onCreate
- 单链表的创建(头插法尾插法),插入,删除
- 155. Min Stack
- 14. Longest Common Prefix 第二个稍微好一些
- linux启动过程与磁盘分区
- 203. Remove Linked List Elements
- 257. Binary Tree Paths
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。
- 20. Valid Parentheses
- 面试常见编程题专题一:链表