|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <malloc.h>
- #define MAXSIZE 100
- #define ElementType int
- typedef struct
- {
- ElementType Data[MAXSIZE];
- int Last ;
- }List;
- List *MakeEmpty() //建立一个空表
- {
- List *PtrL;
- PtrL = (List*)malloc(sizeof(List));
- PtrL->Last = -1;
- return PtrL;
-
- }
- void Insert( ElementType X, int i, List *PtrL )
- { int j;
- if ( PtrL->Last == MAXSIZE-1 ){ /* 表空间已满,不能插入*/
- printf("表满");
- return;
- }
- if ( i < 1 || i > PtrL->Last+2) { /*检查插入位置的合法性*/
- printf("位置不合法");
- return;
- }
- for ( j = PtrL->Last; j >= i-1; j-- )
- PtrL->Data[j+1] = PtrL->Data[j]; /*将 ai~ an倒序向后移动*/
- PtrL->Data[i-1] = X; /*新元素插入*/
- PtrL->Last++; /*Last仍指向最后元素*/
- return;
- }
- void Delete( int i, List *PtrL ) //删除
- { int j;
- if ( i < 1 || i > PtrL->Last+1) { /*检查删除位置的合法性*/
- printf("不存在第%d个元素",i);
- return;
- }
-
-
- for (j=i ;j <= PtrL->Last+1;j++) //将ai ~ an顺序往前插入
- {
- PtrL->Data[j-1] = PtrL->Data[j];
- }
-
- PtrL -> Last--;
-
- return;
- }
- void main()
- {
- List *PtrL = MakeEmpty();
- insert(1,1,PtrL);
- prtinf("list的长度为:%d\n",PtrL->Last+1);
- 。。。。。。
- }
复制代码
约瑟夫环你如果想用链表去解的话建议使用循环链表,你这个Insert是干嘛的
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct Node
- {
- int data;
- struct Node *pNext;
- }NODE, *pNODE;
- pNODE CreateCirculationLinkList()//创建循环链表
- {
- int length = 41, i;//一共有41个人
- pNODE p_new, p_temp;
- pNODE pHead = (pNODE)malloc(sizeof(NODE));//申请头指针的内存空间
- if(pHead == NULL)
- {
- printf("error create!\n");
- exit(EXIT_FAILURE);
- }
- pHead -> data = 0;
- pHead -> pNext = NULL;
- p_temp = pHead;
- for(i = 1; i <= length; ++i)
- {
- p_new = (pNODE)malloc(sizeof(NODE));
- if(p_new == NULL)
- {
- printf("error create!\n");
- exit(EXIT_FAILURE);
- }
- p_new -> data = i;//每个人的编号为i
- p_new -> pNext = NULL;
- p_temp -> pNext = p_new;
- p_temp = p_new;
- }
- p_new -> pNext = pHead -> pNext;//链表尾指向链表头
- return p_new -> pNext;
- }
- void WhoWillSurvive(pNODE pHead, int key)
- {
- while(pHead -> pNext != pHead)
- {
- for(int i = 1; i < key; i++)
- pHead = pHead -> pNext;
- printf("the %d has been killed\n",pHead -> pNext -> data -1);
- pHead -> pNext = pHead -> pNext -> pNext;
- }
- printf("the survive person is:%2d\n",pHead -> data -1);
- }
- int main()
- {
- pNODE head = CreateCirculationLinkList();
- WhoWillSurvive(head, 3);
- system("pause");
- return 0;
- }
复制代码
|
|