马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1.将双向链表和循环链表自己实现一遍,至少要实现创建、增、删、改、查、烧毁工作
循环链表
looplinklist.h
- #ifndef LOOPLINKLIST_H
- #define LOOPLINKLIST_H
- #include <myhead.h>
- typedef int datatype;
- typedef struct Node
- {
- union
- {
- int len;
- datatype data;
- };
- struct Node *next;
- }Node,*NodePtr;
- //创建循环链表
- NodePtr list_create();
- //链表判空
- int list_empty(NodePtr L);
- //链表申请空间封装节点
- NodePtr apply_node(datatype e);
- //按位置进行查找
- NodePtr list_search_pos(NodePtr L,int pos);
- //链表尾插
- int list_insert_tail(NodePtr L,datatype e);
- //链表遍历
- int list_show(NodePtr L);
- //链表头删
- int list_delete_head(NodePtr L);
- //链表销毁
- void list_destroy(NodePtr L);
- //约瑟夫环
- void ysfh(NodePtr L,int m);
- #endif
复制代码 looplinklist.c
双向链表
doublelinklist.h
- #ifndef DOUBLELINKLIST_H
- #define DOUBLELINKLIST_H
- typedef char datatype;
- typedef struct Node
- {
- union
- {
- int len;
- datatype data;
- }
- struct Node *prio;
- struct Node *next;
- }Node,*NodePtr;
- //创建双向链表
- NodePtr list_create();
- //链表判空
- int list_empty(NodePtr L);
- //申请节点封装数据
- NodePtr apply_node(datatype e);
- //链表头插
- int list_insert_head(NodePtr L,datatype e);
- //链表遍历
- int list_show(NodePtr L);
- //按位置查找返回节点
- NodePtr list_search_pos(NodePtr L,int pos);
- //链表任意位置删除
- int list_delete_pos(NodePtr L,int pos);
- //链表空间释放
- void list_destroy(NodePtr L);
- #endif
复制代码 doublelinklist.c
2.利用循环链表完成约瑟夫环标题
- //约瑟夫环
- void ysfh(NodePtr L,int m)
- {
- NodePtr p = L->next;
- NodePtr q = L;
- while( p->next!=p )
- {
- for(int i=1;i<m;i++)
- {
- q = p;
- p = p->next;
- if(p==L)
- {
- q=q->next;
- p=p->next;
- }
- }
- printf("%d\t",p->data);
- NodePtr a = p; //标记
- q->next = p->next; //p->next 孤立
- p=p->next;
- free(a); //释放
- a = NULL;
- }
- printf("\n最后剩下的节点: %d\n", p->data);
- free(p); // 释放最后一节点
- }
复制代码 3.利用栈,完成进制转换
输入:一个整数,进制数
输出:该数的对应的进制数- void DC(StackPtr S,int m,int n)
- {
- while(m/n!=0)
- {
- S->top++;
- S->data[S->top]=m%n;
- m=m/n;
- }
- S->top++;
- S->data[S->top]=1;
- while(S->top!=-1)
- {
- printf("%d",S->data[S->top]);
- S->top--;
- }
- printf("\n");
- }
复制代码 头脑导图
|