7 - 3 jmu - ds - 싱글 체인 시트 의 기본 연산
9313 단어 데이터 구조
두 줄 의 데 이 터 는 첫 번 째 줄 은 꼬리 삽입 법 이 삽입 해 야 할 문자 데이터 의 개수 이 고 두 번 째 줄 은 구체 적 으로 삽 입 된 문자 데이터 입 니 다.출력 형식:
제목 에 따라 입력 샘플 을 출력 합 니 다:
5
a b c d e
출력 예시:
0
a b c d e
5
no
c
1
a b c x d e
a b x d e
코드:
#include
#include
#include
#include
using namespace std;
typedef char ElemType;
typedef struct LNode{
struct LNode * next;
ElemType data;
}LNode, *Linklist;
typedef int status;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
status InitList(Linklist & L);
status InputList(Linklist & L, int len);
void PrintList(Linklist L);
status ListEmpty(Linklist L);
status GetElem_L(Linklist L,int i,ElemType & e);
int LocatElem_L(Linklist L,ElemType e);
status InsertList(Linklist & L,int i,ElemType e);
status DeleteList(Linklist & L,int i,ElemType& e);
int main()
{
Linklist L;
InitList(L);
int n;
scanf("%d",&n);
printf("%d
",L->next);
InputList(L,n);
PrintList(L);
int length = n;
printf("%d
",length);
if(ListEmpty(L)) printf("no
");
else printf("yes
");
ElemType e;
GetElem_L(L,3,e);
printf("%c
",e);
int posi;
cout << LocatElem_L(L,'a') << endl;
InsertList(L, 4, 'x');
++n;
PrintList(L);
DeleteList(L,3,e);
--n;
PrintList(L);
free(L);
return 0;
}
//
status InitList(Linklist & L) {
LNode * temp;
temp = (LNode* )malloc(sizeof(LNode));
if(!temp) exit(OVERFLOW);
L = temp;
L->next = NULL;
return OK;
}
// ( )
status InputList(Linklist & L, int n) {
LNode * curPtr, * rearPtr;
rearPtr = L; // ,rearPtr
for (int i = 1;i <= n;i ++){ // ,
curPtr = (LNode*)malloc(sizeof(LNode));//
if(!curPtr) exit(OVERFLOW);
scanf(" %c",&curPtr->data);//
curPtr->next = NULL; // next
rearPtr->next = curPtr;
rearPtr = curPtr;
}
return OK;
}
//
void PrintList(Linklist L) {
LNode* curPtr;
curPtr = L->next;
while(curPtr != NULL) {
if(L->next == curPtr)
printf("%c",curPtr->data);
else
printf(" %c",curPtr->data);
curPtr = curPtr->next;
}
printf("
");
}
//
status ListEmpty(Linklist L) {
if(L->next) return TRUE;
else return FALSE;
}
// i
status GetElem_L(Linklist L,int i,ElemType & e) {
LNode* p;
p = L->next;
int j = 1;
while(p && j < i) {
p = p->next;
++j;
}
if(!p || j > i) return ERROR;
e = p->data;
return OK;
}
// e
int LocatElem_L(Linklist L, ElemType e) {
LNode* p;
p = L->next;
int j = 1;
while(p && e != p->data) {
p = p->next;
j++;
}
if(p) return j;
else return 0;
}
// i e
status InsertList(Linklist &L, int i, ElemType e) {
LNode * p;
p = L->next;
int j = 1;
while(p && j < i-1) {
p = p->next;
++j;
}
if(!p || j > i-1) return ERROR;
LNode* temp;
temp = (LNode* )malloc (sizeof(LNode));
if(!temp) exit(OVERFLOW);
temp->data = e;
temp->next = p->next;
p->next = temp;
return OK;
}
// i
status DeleteList(Linklist & L,int i,ElemType & e) {
LNode * p,*q;
p = L->next;
int j = 1;
while(p && j < i-1) {
p = p->next;
++j;
}
if(p && j > i-1) return ERROR;
q = p->next->next;
free(p->next);
p->next = q;
return OK;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.