#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define NULL 0
typedef int Status;
typedef int Elemtype;
typedef struct Lnode
{
Elemtype data; //結點的資料域
struct Lnode *next; //結點的指標域
}Lnode,*Linklist; //Linklist為頭指標
//初始化單鏈表
Status InitLinklist(Linklist &L){
L=(Linklist)malloc(sizeof(Lnode));
if(!L)
return ERROR;
L->next=NULL;
return OK;
}
//1.創建單鏈表
Status CreateLinklist(Linklist &L,int a[],int n){
Linklist p=L;//???
for(int i=0;i<n;i++){
Linklist s=(Linklist)malloc(sizeof(Lnode));
if(!s)
return ERROR;
s->data=https://bbs.csdn.net/topics/a[i];
s->next=NULL;
p->next=s;//???
p=s;
}
return OK;
}
//2.列印單鏈表
void DispLinklist(Linklist L){
Linklist p=L->next;
while(p){
printf("\t%d\t",p->data);
p=p->next;
}
printf("\n");
}
//3.在鏈表中查找e
Status LocateLinklist(Linklist L,Elemtype e){
Linklist p=L->next;
int i=1;
while(p){
if(p->data=https://bbs.csdn.net/topics/=e)
{
printf("它的位置是:%d",i);
printf("\n");
break;
}else{
p=p->next;
i++;
}
}
return ERROR;
}
//4.在鏈表中插入一個數
Status InsertLinklist(Linklist &L,Elemtype e,int i){
Linklist p=L->next;
int j=1;
while(p && j<i-1){
p=p->next;
j++;
}
Linklist s=(Linklist)malloc(sizeof(Lnode));
if(!s)
return ERROR;
s->data=https://bbs.csdn.net/topics/e;
s->next=p->next;
p->next=s;
return OK;
}
//5.洗掉鏈表中的元素
Status DeleteLinklist(Linklist &L,int i){
Elemtype e;
Linklist p=L->next,q;
int j=1;
while(p && j<i){
q=p;
p=p->next;
j++;
}
if(!p || j>i)
return ERROR;
e=p->data;
printf("洗掉的元素為:%d",e);
q->next=p->next;
free(p);
return OK;
}
int main(){
int a[]={2,3,5,8,9};
Linklist L;
InitLinklist(L);
CreateLinklist(L,a,sizeof(a)/sizeof(a[0]));
DispLinklist(L);
LocateLinklist(L,8);
InsertLinklist(L,4,3);
DispLinklist(L);
DeleteLinklist(L,5);
DispLinklist(L);
}



uj5u.com熱心網友回復:
太久沒寫C,好生疏,我起個頭,其他人改改并完善下。
unit LinkList;
interface
const
OK = 1;
ERROR = 0;
NULL = 0;
type
Status = Integer;
Elemtype = Integer;
PLnode = ^Lnode;
Lnode = record
data: Elemtype ; //結點的資料域
next: PLnode;
end;
function InitLinklist(L: PLnode): Status;
function CreateLinklist(L: PLnode; a: array of Integer; n: Integer): Status;
implementation
//初始化單鏈表
function InitLinklist(L: PLnode): Status;
begin
GetMem(L,sizeof(PLnode));
if (L=nil) then
begin
result := ERROR;
exit;
end;
L^.next := nil;
result := OK;
end;
//1.創建單鏈表
function CreateLinklist(L: PLnode; a: array of Integer; n: Integer): Status;
var
i: integer;
p,s: PLnode;
begin
p := L;//指向鏈首
for i:=0 to n-1 do
begin
GetMem(s,sizeof(PLnode));
if (s=nil) then
begin
result := ERROR;
exit;
end;
s^.data := a[i];
s^.next := nil;
p^.next := s; //新的節點掛到鏈表上
p := s;
end;
result := OK;
end;
end.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17677.html
標籤:語言基礎/算法/系統設計
下一篇:資料庫
